Inserting

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Favorites, Groups & Events

    Inserting - Presentation Transcript

    1. Lezione su Ruby on Rails Prof. Silvano Natalizi Aprile 2009
    2.  
    3.  
    4.  
      • La scrittura dei dati nella tabella è l’opposto della lettura dei dati
      • Invece di avere una view per mostrare i dati, ci occorre una form per sottomettere i dati.
      • Invece di avere un metodo del controllore che invii i dati ad una pagina web, ci occorre un metodo che legga i dati di una pagina e li trasformi in un oggetto
      • Invece di avere il modello che legga un record e lo converte in un oggetto, ci occorre che il modello converta un oggetto in un nuovo record del database
    5. Che cosa occorre per la Lettura Che cosa occorre per la Scrittura Un modello per leggere un record e convertirlo in un oggetto Un modello per convertire un oggetto in un nuovo record del database Un metodo show del controllore per inviare i dati alla view della pagina web Un metodo create del controllore per leggere i dati di una form della pagina web e trasformarli in un oggetto Una view per mostrare dati in output Una form per digitare e sottomettere i dati in input
    6.  
    7.  
      • I campi della form combaciano con quelli dell’oggetto
      • Con l’eccezione della chiave primaria id
      • Il nome del campo della form deve coincidere con quello dell’attributo dell’oggetto
      • Ad un certo punto l’applicazione deve trasferire i dati tra la form e l’oggetto
      • Ai campi della form occorre dare dei nomi che esplicitamente corrispondano a quelli del modello
    8.  
      • <% form for %>
      • Questo tag viene usato per generare una form
      • L’istruzione è:
      • <% form for(@ad,:url=>{:action=>’create’}) do |f| %>
        • @ad specifica per quale oggetto si vuole fare la form
        • :action=>’create’ indica quale metodo del controllore dovrà elaborare i dati della form
      • I campi della form sono generati con espressioni simili a questa:
      • <p ><b>Nome</b>br /> <%= f.text_field :price %> </p>
      • :price indica il nome della variabile
      • Il bottone submit, per inviare al server i dati della form, viene generato con la seguente istruzione:
      • <%= f.submit “create” %>
    9.  
      • La pagina “New ad” con la form per digitare i dati deve apparire con l’indirizzo url
      • http://mebay.com/ads/new
      • Mentre la form è inviata all’elaborazione con
      • http://mebay.com/ads/create
      • Pertanto occorre che nel file routes.rb siano inserite le relative route; perché una route dice a rails quale parte di codice deve usare per soddisfare la richiesta del browser
      • map.connect ‘/ads/new’, :controller=>’ads’, :action=>’new’
      • map.connect ‘/ads/create’, :controller=>’ads’, :action=>’create ’
      • Nel controllor ‘ads’ devono pertanto essere scritti i metodi new e create.
      • Nel metodo ‘new’ bisogna mettere l’istruzione che crea un oggetto di tipo ads
      • @ad= Ad.new
      • Se non viene scritta questa istruzione, quando andiamo a testare l’url corrispondente, Rails dà il seguente errore.
    10.  
      • Per default, una variabile ,ad esempio, @ad è settata con un valore speciale chiamato nil , che significa nessun valore.
      • una variabile nil non ha nessun attributo, come ad esempio @ad.name, @ad.description,…
      • Una variabile @ad nil causa problemi alla form for(@ad…)
      • La form è basata sull’oggetto @ad, perché essa accede a ciascun attributo dell’oggetto per generare i valori iniziali dei campi della form.
    11.  
    12.  
      • La combinazione di un metodo del controllore e di una view costituisce una azione!
      • Pertanto il nome di un’azione deve essere sia un metodo del controllore che il nome di una view.
    13.  
    14.  
      • La form usa il protocollo http per inviare i dati al server
      • Pertanto sulla rete non viaggia l’oggetto, ma viaggiano i dati della form
      • Come sono formattati i dati ?
      • I campi della form sono memorizzati nella struttura dati (hash o array associativo) params
      • In questa struttura dati sono memorizzati sia i valori che i nomi dei campi della form
      • Praticamente si ha ha una tabella che fa corrispondere a ciascun nome di campo il suo valore come digitato nella form.
    15.  
      • Il metodo create deve salvare i campi della form nel database
      • Rails può solo usare oggetti per parlare al database.
      • Pertanto, prima di salvare i dati della form, rails deve convertirli in un oggetto
      • Il metodo new deve essere eseguito passando in input i dati della form, ossia di params, per inizializzare gli attributi del nuovo oggetto
      • @ad=Ad.new(params[:ad])
      • Dopo aver convertito i dati della form in un oggetto,
      • Occorre salvare questo oggetto nel database, con l’istruzione
      • @ad.save
      • Rails ispeziona tutti gli attributi e genera gli SQL statements di insert
    16.  
      • def create
          • @ad=Ad.new(params[:ad])
          • @ad.save
        • end
    17.  
    18.  
      • Quando viene completata l’esecuzione del metodo create, un nuovo record è correttamente memorizzato nel database.
      • Poi rails deve generare una pagina di risposta e va a cercare una view con il medesimo nome create.html.erb.
      • Ma questo template non esiste!
    19.  
      • Creiamo il file create.html.erb per confermare che il record è stato creato correttamente e per fornire il link al nuovo record
      • <h1>Ad creato!</h1>
      • Esamina il record<a href=“/ads/< %=@ad.id % >”>qui</a>
    20.  
    SlideShare Zeitgeist 2009

    + silvanonatalizisilvanonatalizi Nominate

    custom

    269 views, 0 favs, 0 embeds more stats

    Come inserire dei record nel database con rails

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 269
      • 269 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 5
    Most viewed embeds

    more

    All embeds

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories