Esercitazioneguidata Rubyon Rails Lista

15
esercitazione guidata Ruby on Rails 3) action ‘lista’ Prof. Silvano Natalizi, maggio 2009 Esercitazione VA Liceo Tecnico

description

come creare e visualizzare una lista di record ottenuti dal finder find(:all)

Transcript of Esercitazioneguidata Rubyon Rails Lista

Page 1: Esercitazioneguidata Rubyon Rails Lista

esercitazione guidata Ruby on Rails

3) action ‘lista’

Prof. Silvano Natalizi, maggio 2009

Esercitazione VA Liceo Tecnico

Page 2: Esercitazioneguidata Rubyon Rails Lista

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)

Page 3: Esercitazioneguidata Rubyon Rails Lista

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

Page 4: Esercitazioneguidata Rubyon Rails Lista

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

Page 5: Esercitazioneguidata Rubyon Rails Lista

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

Page 6: Esercitazioneguidata Rubyon Rails Lista

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

Page 7: Esercitazioneguidata Rubyon Rails Lista

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<%=… %>

Page 8: Esercitazioneguidata Rubyon Rails Lista

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>

Page 9: Esercitazioneguidata Rubyon Rails Lista

codice lista.html.erb 2

Inserisco l’iteratore for<% for multisala in @multisala %>

<% end %>

Page 10: Esercitazioneguidata Rubyon Rails Lista

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

Page 11: Esercitazioneguidata Rubyon Rails Lista

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.

Page 12: Esercitazioneguidata Rubyon Rails Lista

Aggiungi a routes.rb

Aggiungi in cima al file config/routes.rb la nuova strada:

map.connect "multisalas/lista",

:controller=>'multisalas',

:action=>'lista'

Page 13: Esercitazioneguidata Rubyon Rails 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

Page 14: Esercitazioneguidata Rubyon Rails Lista

Risultato della lista

Page 15: Esercitazioneguidata Rubyon Rails Lista

Continua…