[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