[newbie] Passare un array fra 2 controller

Ho qualche difficoltà nel capire come passare da un controller ad un
altro un array di elementi, ad esempoio degli ID.
Ho una situazione di questo tipo:


controllerA
def method1
idList = [‘1’,‘2’,‘3’]
redirect_to :controller =>“controllerB”, :action =>“method2”, :idList =>
idList
end

controllerB
def method2 user
@elements = Element.find[params(‘idList’)]
end

Dove sbaglio?
Grazie mille a chi vorrà risponermi.

Aurora

Il giorno 02/nov/07, alle ore 09:34, Aurora Ermon ha scritto:

Ho qualche difficoltà nel capire come passare da un controller ad un
altro un array di elementi, ad esempoio degli ID.
Ho una situazione di questo tipo:
[…]

Come mai utilizzi questo
redirect?_______________________________________________
Ml mailing list
[email protected]
http://lists.ruby-it.org/mailman/listinfo/ml

Giovanni I. wrote:

Il giorno 02/nov/07, alle ore 09:34, Aurora Ermon ha scritto:

Ho qualche difficolt� nel capire come passare da un controller ad un
altro un array di elementi, ad esempoio degli ID.
Ho una situazione di questo tipo:
[…]

Come mai utilizzi questo
redirect?

In realtà è solo un esempio per capire un po’ meglio come funziona il
passaggio dei parametri in casi come questo.
Una cosa simile mi era capitata con una form all’inerno della quale
avevo un elenco di chekbox (con numero di elementi variabile). Nel
controller associato alla form facevo un redirect ad un altro controller
al quale volevo passare gli elementi checkati.

Aurora

Puoi usare la variabile session oppure creare una variabile globale.

Il 02/11/07, Aurora Ermon[email protected] ha scritto:

Per quanto sia possibile passare questi dati nella session, non è un
approccio che consiglio. Di solito è possibile disegnare la propria
applicazione in modo che non siano necessari redirect che passano
valori tra varie azioni.

A volte un semplice render :action => ‘foo’ è sufficiente a risolvere
questi problemi.

Il giorno 02/nov/07, alle ore 10:24, Aurora Ermon ha scritto:

giusto! il fatto della session, era solo per dare un idea poi dipende
dal caso specifico

Il 02/11/07, Giovanni I.[email protected] ha scritto:

Aurora Ermon ha scritto:

@elements = Element.find[params(‘idList’)]
Probabilmente hai sbagliato la riga quotata: params non è un metodo,
quindi l’uso delle parentesi tonde è errato. Dovresti invece scrivere:

@elements = Element.find(params[‘idList’])

Probabile che tu debba cambiare qualcosa nelle routes, perché Rails di
default si aspetta path che contengano controller, action ed id (unico).
Considera che qualsiasi cosa passata come parametro viene serializzata,
quindi otterresti apici, virgole e quadre nell’url.

Mi sembra una pratica strana: valuta anche l’opzione di semplificare il
tutto.

Ciao.


blog: www.lucaguidi.com

Speaker at:
Rails To Italy '07 Conference
Oct, 26-27 2007 - Pisa
www.railstoitaly.org

Luca G. wrote:

Aurora Ermon ha scritto:

@elements = Element.find[params(‘idList’)]
Probabilmente hai sbagliato la riga quotata: params non è un metodo,
quindi l’uso delle parentesi tonde è errato. Dovresti invece scrivere:

@elements = Element.find(params[‘idList’])

Probabile che tu debba cambiare qualcosa nelle routes, perché Rails di
default si aspetta path che contengano controller, action ed id (unico).
Considera che qualsiasi cosa passata come parametro viene serializzata,
quindi otterresti apici, virgole e quadre nell’url.

Hai ragigone! Scrivendo l’esempio ho invertito le parentesi quadre e
tonde.
Ma il problema non era quello. Nel codice che avevo scritto le parentesi
erano corrette.

Mi sembra una pratica strana: valuta anche l’opzione di semplificare il
tutto.

Sì, anch’io di fronte a questa difficoltà ho semplificato il tutto ed ho
superato il problema, ma mi è rimasta la curiosità di sapere come si
potrebbe risolvere una situazione di questo tipo.
Grazie a tutti per le risposte!

Aurora