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

Pietro Giorgianni giorgian a gmail.com
Sab 9 Gen 2010 16:53:24 CET


Il 09 gennaio 2010 15.41, Luca Reghellin <email a reghellin.com> ha scritto:
> Ciao! Sono relativamente nuovo a rails. Sono un programmatore
> javascript/actionscript e conosco un po' ruby.

ciao

> C'è una cosa che, sebbene la uso, non capisco perché funzioni così: le
> variabili istanza (@) perché in un tipico  controller devo ripeterle ad
> ogni azione(metodo)? Non è una duplicazione? E perché la view non mi
> vede una variabile istanza magari già definita in un'altro metodo?
> [...]ciao,
> Per quale motivo sono costretto a dichiarare 2 volte @show come nuova
> istanza di Show? Non è forse la stessa? 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?

Quando hai a che fare con un'applicazione web, devi considerare ogni
singola richiesta (request) indipendente dalle altre precedenti; ad
esempio perché ci possono essere thread diversi.
Anche nel caso di un unico thread, il controller viene comunque
istanziato di volta in volta.

Dimostrazione:

# app/controllers/prova_controller.rb

def index
  @mioid = object_id
end

# /app/views/prova/index.html.erb
<%= @mioid %>

andare su http://localhost:3000/prova e fare tante volte reload


Da tutto ciò consegue che, quando viene eseguito un qualunque metodo
del controller, nessuna variabile d'istanza definita in altri metodi
action può essere presente.


pietro


More information about the Ml mailing list