Lezione Guidata Ruby On Rails Insert

Post on 24-Jun-2015

931 views 0 download

Tags:

description

come creare una form per inserire i dati in una tabella relazionale, con l'azione new e create

transcript

Lezione guidata Ruby on Rails

1) action :new

Prof. Silvano Natalizi, maggio 2009

Esercitazione VA Liceo Tecnico

Creare l’applicazione

1. Creare l’applicativo, ad esempio: cinema, 1. rails cinema2. cd cinema

2. Creare la prima tabella relazionale di nome multiSala con i campi nome, numerosale, località

1. ruby script/generate model multisala nome:string numerosale:integer localita:string

2. rake db:migrate

3. Creare il controllore cinema (al plurale) e il metodo new

1. ruby script/generate controller multisalas new

Scrivere nel controllore cinemas le istruzioni del metodo new

1. Aprire con un editor (programmer’s notepad) il controllore multisalas ed inserire le istruzioni del metodo new e salva

1. def new

@multisala=Multisala.new

end

Scrivere la form new.html.erb

1. Scrivere la form new.html.erb e salvarla nella cartella view/cinemas

1.

Lanciare l’applicativo

1. Mandare in esecuzione il server1. ruby script/server

2. Aprire con firefox una pagina web con url1. localhost:3000/multisalas/new

3. Verificare che sia presente la form per l’inserimento dei dati

4. Verificare che premendo il bottone create si abbia l’errore Unknown action

5. L’errore è ovvio, ancora non abbiamo implementato il metodo create !

Scrivere il metodo create

1. Scrivere il metodo create nel controllore multisalas

1. def create

@multisala=Multisala.new(params[:multisala])

@multisala.save

redirect_to :action=>’new’

end

Inserire dei dati nella form e premere il bottone create

1. Inserire dei dati nella form e premere il bottone create

2. Verificare che venga reindirizzata la medesima pagina (con la medesima form di input)

3. Inserire altri dati

Chiudere il server e verificare che i dati siano presenti nel database

1. Chiudere il server1. ctrl_c

2. cd db

2. Aprire il database development.sqlite31. sqlite3 development.sqlite3

3. Leggere tutti i campi e tutti i record della tabella multisalas

1. select * from multisalas;

4. Uscire dal database 1. .exit

Inserire nel modello i validatori

1. Aprire il modello ed inserire i validatori e salvare class Multisala < ActiveRecord::Base

validates_presence_of :nome

validates_presence_of :numerosale validates_presence_of :localita validates_numericality_of :numerosale

end

Inserire nella new.html.erb il messaggio

1. Inserire nella form new.html.erb la riga:

1. <%= f.error_messages %>

<h1>new.html.erb</h1><% form_for(@multisala, :url=>{:action=>'create'}) do |f| %> <%= f.error_messages %> <p><b>Nome</b><br /><%= f.text_field :nome %></p> <p><b>numero sale</b><br /><%= f.text_field :numerosale %></p> <p><b>Localita'</b><br /><%= f.text_field :localita %></p> <p><%= f.submit "create" %> </p><% end %>

Modificare il metodo create del controllore multisalas

1. Modificare il codice al seguente modo: def create

@multisala=Multisala.new(params[:multisala])

if @multisala.save

redirect_to :action=>'new’

else

render :template=>"multisalas/new“

end

end

Verificare gli errori dei validatori

1. Lanciare il server (ruby script/server)

2. Nella form di input non inserire nessun dato e premere il bottone create. Verificare gli errori di validazione

3. Inserire tutti i dati, ma nel ‘numero sale’ mettere una stringa anziché un numero. Verificare l’errore di numericità

4. Infine inserire tutti i dati in maniera corretta e verificare che non ci sia più nessun errore

Continua con l’azione ‘show’