Esercitazioneguidata Rubyon Rails Lista
-
Upload
silvano-natalizi-itis-alessandro-volta-perugia -
Category
Education
-
view
608 -
download
2
description
Transcript of Esercitazioneguidata Rubyon Rails Lista
esercitazione guidata Ruby on Rails
3) action ‘lista’
Prof. Silvano Natalizi, maggio 2009
Esercitazione VA Liceo Tecnico
Differenza tra l’azione ‘show’ e ‘lista’
L’azione ‘show’ legge e visualizza i valori dei campi di un solo record
L’azione ‘lista’ legge e visualizza i valodei dei campi di un gruppo di record o addirittura di tutti i record di una tabella ( o del join tra più tabelle)
Azione ‘lista’
Quale codice bisogna scrivere per implementare un’azione ?
In generale per ogni azione bisogna scrivere un metodo nel controllore ed una view
In questo caso va scritto il metodo lista e la view lista.html.erb
Il metodo ‘lista’
1. apri il controllore multisalas con un editor
2. scrivi le istruzioni:
def lista
@multisala=Multisala.find(:all)
end
3. Osserva che il finder legge tutti i record della tabella associata al modello Multisala
L’array @multisala
@multisala è un arrayPertanto le sue variabili sono accessibili tramite
indice numerico @multisala[i]Ogni cella di questo array contiene un oggetto
multisalaOgni attributo di un oggetto è accessibile tramite
l’istruzione oggetto.attributo (prima il nome dell’oggetto, poi il nome dell’attributo)
In questo caso @multisala.nome,
@multisala.numerosale, @multisala.localita
L’iteratore for
L’iteratore for è un modo per accedere ad ogni elemento di una collezione, quale quella di un array
La sintassi di questa for è:
for var_nome in collezione_nome do
istruzioni(var_nome)
end
Come scrivere la view di output: lista.html.erb
Il gruppo di record letto dal finder è memorizzato nell’array @multisala
Gli elementi dell’array sono gli oggetti Multisala, ciascuno dei quali corrisponde ad una riga della tabelle multisalas
Per visualizzare tutti questi oggetti possiamo utilizzare l’elemento html <table>
Iteriamo l’array @multisala con l’iteratore forCiascun oggetto lo visualizziamo in una riga <tr>Poiché dobbiamo visualizzare i valori delle variabili
degli oggetti abbiamo bisogno del linguaggio ERB<%=… %>
codice lista.html.erb 1
Metto l’intestazione della lista<h1>Lista delle Multisale</h1>
Inserisco la tabella html e la prima riga di intestazione delle colonne della tabella
<table>
<th>Nome</th><th>Numero sale</th><th>Localita’</th>
codice lista.html.erb 2
Inserisco l’iteratore for<% for multisala in @multisala %>
<% end %>
Inserisco all’interno dell’iteratore for l’istruzione da ripetere:una riga con i valori degli attributi dell’oggetto multisala <% for m in @multisala %>
<tr><td><%= m.nome %></td> <td><%= m.numerosale %></td>
<td><%= m.localita %></td> </tr> <% end %> </table>
salva nella cartella views/multisalas con il nome lista.html.erb
Che differenza c’è tra @multisala e multisala
In Rails una variabile preceduta da @ significa visibilità globale (ossia da tutti i metodi della medesima classe) – variabile globale
Una variabile non preceduta da @ è una variabile locale, ossia visibile solo all’interno del metodo dove è definita.
Aggiungi a routes.rb
Aggiungi in cima al file config/routes.rb la nuova strada:
map.connect "multisalas/lista",
:controller=>'multisalas',
:action=>'lista'
Lancia il server e prova il metodo ‘lista’
Naviga nella cartella cinema e Lancia il serverruby script/server
apri il browser con l’indirizzo http://localhost:3000/multisalas/lista
E verifica la lista dei record ottenuti
Risultato della lista
Continua…