Controlla con rake routes come viene interpretato il percorso.
Controlla prima che tutto funzioni digitando a mano il percorso nella
barra dell’indirizzo e dopo controlla che l’href sia quello che deve
essere
e non qualcos’altro.
se params[:shop_id] null vuol dire che il routing non la interpreta
bene.
E’ una nested resource per caso?
immagino che apra una new che contiene una form per creare un feedback,
e
che il relativo POST vada a finire nella create di quel controller.
la prima cosa che farei e’ controllare dal log che tra i parametri
passati
alla create ci sia :shop_id
Se NON hai usato un routing in cui lo shop_id e’ incluso nell’url,
allora
devi assicurarti che nella form presente nella pagina new ci sia un
campo
(nascosto) che lo contiene (e quando apri la pagina il campo nascosto
deve
avere il valore giusto
Altra cosa che mi pare da verificare: @feed.evaluated_shop =
Shop.find(params[:shop_id])
In feed immagino che ci sia un campo shop_id, e non magari
evaluated_shop_id, giusto?
Controlla con rake routes come viene interpretato il percorso.
Controlla prima che tutto funzioni digitando a mano il percorso nella
barra dell’indirizzo e dopo controlla che l’href sia quello che deve essere
e non qualcos’altro.
ho provato,ma non e’ un problema di routing, sembra che il parametro
shop_id non venga preservato dalla new alla create.
se params[:shop_id] null vuol dire che il routing non la interpreta bene.
E’ una nested resource per caso?
Non saprei dirti e’ un id di una relazione has_many
il fatto e’ che gli oggetti che crei durante l’esecuzione di una action
non
esistono piu’ dopo che la action e’ terminata, quindi non puoi creare
qualcosa nella new e ritrovarlo quando esegui la create. I dati devono
passare per il browser (via URL o parametri nelle form).
In alcuni casi puoi memorizzare nella sessione un dato che deve
persistere
attraverso diverse richieste (stando attento a non cercare di mantenere
in
sessione oggetti completi, ma solo ad esempio i loro id). Ma nel tuo
caso
non mi sembra necessario.
On Wed, Nov 6, 2013 Luca wrote:> immagino che apra una new che contiene
una form per creare un feedback, e
che il relativo POST vada a finire nella create di quel controller.
Esatto
la prima cosa che farei e’ controllare dal log che tra i parametri passati
alla create ci sia :shop_id
confermo, c’e’
Se NON hai usato un routing in cui lo shop_id e’ incluso nell’url, allora
devi assicurarti che nella form presente nella pagina new ci sia un campo
(nascosto) che lo contiene (e quando apri la pagina il campo nascosto deve
avere il valore giusto
questa soluzione funziona !!!Ma non sarebbe meglio settare la variabile
nella new e poi richiamarla dalla create ?Mi chiedo perche’ passarla
avanti e indietro alla view ?
Ho provato a fare diversamente aggiungendo alla create la seguente riga:
Altra cosa che mi pare da verificare: @feed.evaluated_shop =
Shop.find(params[:shop_id])
In feed immagino che ci sia un campo shop_id, e non magari
evaluated_shop_id, giusto?
Esatto.
Grazie a te e agli alttri per avermi risolto il problema
il fatto e’ che gli oggetti che crei durante l’esecuzione di una action non
esistono piu’ dopo che la action e’ terminata, quindi non puoi creare
qualcosa nella new e ritrovarlo quando esegui la create. I dati devono
passare per il browser (via URL o parametri nelle form).
In alcuni casi puoi memorizzare nella sessione un dato che deve persistere
attraverso diverse richieste (stando attento a non cercare di mantenere in
sessione oggetti completi, ma solo ad esempio i loro id). Ma nel tuo caso
non mi sembra necessario.
Ho capito, ed effettivamente non mi sembra il caso di metterla come var
di sessione.