Best practice per passaggio di molte variabili alla view

Supponiamo che un controller debba passare una dozzina di variabili ad
una view. Tra una cosa e l’altra il metodo del controller diventa
necessariamente piuttosto grosso.

In mancanza di helper per i controller (fare metodi privati nel
controller stesso o in application_controller mi piace poco) una
strategia che ho usato è creare un modello slegato dal db che encapsuli
la logica del metodo del controller, istanziarlo, fargli fare quel che
deve e passarlo alla view che poi ne estrarrà dagli attributi i valori
che le servono.

In questo modo il controller rimane magro, per contro si aggiunge un
livello di indirettezza sia nel controller sia nella view rallentando la
lettura del codice.

Mi chiedevo se ci sono alternative e se ci sono best practice
riconosciute.

Grazie!
Paolo

un hash in sessione?

Andrea C. wrote:

un hash in sessione?

Un hash di istanza, perchè scomodare la sessione?
A me non piace creare un model per questo scopo, mi piace meno che i
metodi privati del controller. Se la logica da sharare è tanta e non
conviene inserirla nel relativo model o sotto l’application controller,
io farei moduli o classi da mettere sotto lib

Marco M. wrote:

A me non piace creare un model per questo scopo, mi piace meno che i
metodi privati del controller. Se la logica da sharare è tanta e non
conviene inserirla nel relativo model o sotto l’application controller,
io farei moduli o classi da mettere sotto lib

In effetti è possibile che la lib sia una soluzione filosoficamente
migliore. Il metodo però è praticamente identico. Googlando ho anche
trovato quest’alternativa:
http://groups.google.ca/group/rubyonrails-talk/browse_thread/thread/cd4b0bbfa6671ae7?fwc=1
E’ un po’ fuori standard perché prevede la creazione di una nuova dir
app/controller_helpers (ma si potrebbe anche usare app/helpers) però
quasi quasi mi piace di più. Ci devo pensare.

Grazie a tutti!
Paolo

Passare tante variabili e’ un po’ sospetto… quantomeno passerei un hash
o
ancora meglio un oggetto.
Siccome questi valori probabilmente mapperebbero su attributi dei
modelli,
potrebbe essere utile un approccio tipo presenter pattern (
Jay Fields' Thoughts: Rails: Presenter Pattern) o
comunque
qualcosa basato sulla delegation… poi se metterli in
controller_helpers o
lib e’ questione di gusti… io propenderei per lib.

Ciao

2009/12/10 Paolo M. [email protected]

Sto leggendo i post sul pattern presenter. Avevo fatto qualcosa di
simile per certe parti di una mia applicazione ma l’approccio che
descrivono è più generale e sembra essere quel che mi serve.

Grazie!
Paolo

Luca De Marinis wrote:

Passare tante variabili e’ un po’ sospetto… quantomeno passerei un hash
o
ancora meglio un oggetto.
Siccome questi valori probabilmente mapperebbero su attributi dei
modelli,
potrebbe essere utile un approccio tipo presenter pattern (
Jay Fields' Thoughts: Rails: Presenter Pattern) o
comunque
qualcosa basato sulla delegation… poi se metterli in
controller_helpers o
lib e’ questione di gusti… io propenderei per lib.

Ciao

2009/12/10 Paolo M. [email protected]