Ich verwende fields_for
in meiner Form wie sofields_for Array Senden statt Hash (Rails 3)
<%= form_for @user %>
...
<%= f.fields_for :photos do |f2| %>
<%= f2.radio_button :public, 'true' %>
<% end %>
...
<% end %>
Hier sind die Radio-Buttons erzeugt sie:
<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" />
...
ich dies in Benutzer .rb
has_many :photos
accepts_nested_attributes_for :photos
Wenn Formular abgeschickt wird ich diesen Fehler:
Error during failsafe response: ActionView::Template::Error
TypeError (expected Hash (got Array) for param `photos_attributes'):
Weiß jemand, warum das passiert?
Btw, ich bin mit Rails 3.0.0.rc2
Speichern erfolgt mit dem Standard '@ user.update_attributes (params [: user])'. Leider kann ich den params-Hash nicht anzeigen, da er vor dem Drucken auf der Konsole stirbt. Ich nehme an, der Params-Hash hat das Array, wie du es geschrieben hast - also immer noch nicht sicher, warum es sich darüber beschwert. Danke für die Antwort! –
@Brian, Sie können 'logger.debug (params.inspect)' überprüfen. –
Hallo Andrew, danke für die Antwort. Also, wo sollte ich diese Zeile hinstellen? Es stirbt, bevor ich sogar meine Controller-Aktion oder application_controller eingeben kann. Es ist eine Art Ausfallsicherung für Schienen, die bei der ersten Verarbeitung der Anforderung abstürzt, so dass sie nie mehr in meinen Code eingeht. Oder gibt es woanders, um es hinzuzufügen? –