[ruby-it] [rails] variabili istanza: scope e duplicazione?

Andrea Pavoni apeacox a gmail.com
Sab 9 Gen 2010 16:57:40 CET


Luca Reghellin ha scritto:
> Prendiamo un semplice controller admin, rest, ma vale per tutti.
> Prendiamo le azioni new e create.
>
>   def new
>     @show = Show.new
>   end
>
>   def create
>     @show = Show.new(params[:show])
>     if @show.save
>       redirect_to admin_shows_path
>     else
>       render :new
>     end
>   end
>
> Per quale motivo sono costretto a dichiarare 2 volte @show come nuova
> istanza di Show? Non è forse la stessa? 
innanzi tutto è una questione di scope, @show viene inizializzato quando 
viene chiamato uno dei due metodi, altrimenti non esisterebbe. considera 
il fatto che sei libero di usare due variabili con nome differente nei 
due metodi, perchè non hanno correlazione.
> Alla view new passo @show a
> form_for, il quale raccoglie i dati e li spedisce a create. Perché in
> create devo creare una nuova istanza di Show?
>   
alla view 'new' passi @show che è stata inizializzata nella action 'new' 
e che andrà in pasto a form_for.

La action 'create' crea una nuova instanza del modello Show passando 
direttamente i parametri che ha ricevuto dalla form (tramite l'array params)

spero che ora ti sia più chiaro ;)
A.


More information about the Ml mailing list