View
629
Download
0
Embed Size (px)
DESCRIPTION
Lezione guidati sull'azione show per visualizzare un record, di una tabella relazionale, identificato da un valore della sua chiave primaria id
Citation preview
Lezione guidata Ruby on Rails
2) action ‘show’
Prof. Silvano Natalizi, maggio 2009
Esercitazione VA Liceo Tecnico
Dopo aver creato il modello multisala ed il metodo new
Nella precedente ‘lezione guidata’, abbiamo creato il modello multisala, il controllore multisalas ed il metodo new per inserire dei record nella tabella multisalas.
Ora creiamo l’azione ‘show’ per leggere un record dalla tabella multisalas
Azione show
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 show e la view show.html.erb
Metodo show
1. apri il controllore multisalas con un editor
2. scrivi le istruzioni:
def show
@multisala=Multisala.find(params[:id])
end
params[:id]
params[:id] contiene i valori dei campi di una riga della tabella relazionale multisalas, della riga identificata univocamente da un valore dato alla
chiave primaria id.
Ma questo valore chi lo fornisce a id ?Come facciamo a scegliere questo valore ?
Digitiamo il valore di id nel url
Possiamo digitare il valore di id nell’indirizzo url della pagina webhttp://localhost:3000/multisalas/1http://localhost:3000/multisalas/2http://localhost:3000/multisalas/3….
http://localhost/multisalas/1
lancia il server
ruby script/server apri il browser con l’indirizzo url
http://localhost:3000/multisalas/1 verifica l’errore
Unknown action
Inserisci la nuova route
Rails deve sapere quale codice eseguire per la route http//localhost:3000/multisalas/1
Apri il file di configurazione routes.rb nella cartella config
Aggiungi all’inizio del file la seguente riga:
map.connect ‘/multisalas/:id’, :controller=>’multisalas’, :action=>’show’
Aggiungi anche le route dei metodi ‘new’ e ‘create’
Aggiungi all’inizio del file config/routes.rb:
map.connect ‘multisalas/new’, :controller=>’multisalas’, :action=>’new’
map.connect ‘multisalas/create’, :controller=>’multisalas’, :action=>’create’
Fai attenzione alle virgole ed ai segni di virgolette ‘ (non sono apostrofi)
Il file routes.rb dopo le nostre modifiche
Leggiamo il record di chiave id=3
apri la pagina http://localhost:300/multisalas/3 se ricevi il messaggio
ActiveRecord::RecordNotFound in MultisalasController#show
Couldn't find Multisala with ID=2 non ti spaventare, significa che non c’è il record
con chiave 3. In tal caso prova altre chiavi, come 1,2…
Quando ricevi il messaggio Template is missing, va bene perché ancora dobbiamo scrivere la view show.html.erb
show.html.erb
scrivere il seguente codice e salvarlo nella cartella views/multisalas
<h1>Multisala</h1>
<p><b>chiave primaria:</b> <%= @multisala.id %> </p>
<p><b>nome :</b> <%= @multisala.nome %> </p>
<p><b>numero sale :</b> <%= @multisala.numerosale%></p>
<p><b>localita' :</b> <%= @multisala.localita %> </p>
Ricaricare la pagina
ricarica la pagina http://localhost/multisalas/3 verifica di ottenere il seguente risultato :
Continua con l’azione ‘update’