estoy usando fields_for
en mi forma como talfields_for envío de matriz en lugar de hash (carriles 3)
<%= form_for @user %>
...
<%= f.fields_for :photos do |f2| %>
<%= f2.radio_button :public, 'true' %>
<% end %>
...
<% end %>
Aquí están los botones de radio que 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" />
...
que tienen esto en el usuario .rb
has_many :photos
accepts_nested_attributes_for :photos
Cuando formulario se envía consigo este error:
Error during failsafe response: ActionView::Template::Error
TypeError (expected Hash (got Array) for param `photos_attributes'):
¿Alguien sabe por qué sucede esto?
Por cierto, estoy usando Rails 3.0.0.rc2
El ahorro se produce con el estándar '@ user.update_attributes (params [: user])'. Lamentablemente, no puedo ver el hash de parámetros porque se apaga antes de imprimirlo en la consola. Supongo que el hash de params tiene la matriz como la escribiste, así que todavía no estoy seguro de por qué se queja de eso. ¡Gracias por la respuesta! –
@Brian, puede hacer 'logger.debug (params.inspect)' para verificar. –
Hola Andrew, gracias por la respuesta. Entonces, ¿dónde pondría esa línea? Muere antes incluso de ingresar mi acción de controlador o application_controller. Es una especie de failsafe para los rieles que muere durante el primer procesamiento de la solicitud por lo que nunca ingresa ninguno de mis códigos. ¿O hay otro lugar para agregarlo? –