Sto usando fields_for
nella mia forma in questo modofields_for invio matrice anziché Hash (Rails 3)
<%= form_for @user %>
...
<%= f.fields_for :photos do |f2| %>
<%= f2.radio_button :public, 'true' %>
<% end %>
...
<% end %>
Qui ci sono i pulsanti di opzione che genera:
<input id="user_photos_attributes_0_public_true" name="user[photos_attributes][0][public]" type="radio" value="true" />
<input id="user_photos_attributes_0_id" name="user[photos_attributes][0][id]" type="hidden" value="1" />
<input id="user_photos_attributes_1_public_true" name="user[photos_attributes][1][public]" type="radio" value="true" />
<input id="user_photos_attributes_1_id" name="user[photos_attributes][1][id]" type="hidden" value="4" />
<input id="user_photos_attributes_2_public_true" name="user[photos_attributes][2][public]" type="radio" value="true" />
<input id="user_photos_attributes_2_id" name="user[photos_attributes][2][id]" type="hidden" value="5" />
...
ho questo in utente .RB
has_many :photos
accepts_nested_attributes_for :photos
Quando modulo viene inviato ottengo questo errore:
Error during failsafe response: ActionView::Template::Error
TypeError (expected Hash (got Array) for param `photos_attributes'):
Qualcuno sa perché questo sta accadendo?
Btw, sto usando Rails 3.0.0.rc2
Salva verifica con standard '@ user.update_attributes (params [: utente])'. Sfortunatamente non riesco a visualizzare l'hash dei param perché muore prima di stamparlo sulla console. Presumo che l'hash params abbia la matrice come se l'avessi scritta, quindi non sono ancora sicuro del motivo per cui si lamenta di ciò. Grazie per la risposta! –
@Brian, puoi fare "logger.debug (params.inspect)" per verificare. –
Ciao Andrew, grazie per la risposta. Quindi in realtà dove metterei quella linea? Muore prima ancora di entrare nel mio controller action, o application_controller. È una sorta di failsafe per i binari che muore durante la prima elaborazione della richiesta, in modo che non entri mai nemmeno nel mio codice. O c'è da qualche altra parte per aggiungerlo? –