У меня есть модель Sensor с has_many
и accepts_nested_attributes_for
отношениями с другой моделью Watch. В форме для обновления датчика у меня есть что-то вроде следующего
<%= sensor_form.fields_for :watches do |watches_form| %>
<%= watches_form.label :label %><br />
<%= watches_form.text_field :label %>
<% end %>
Этот индекс предназначен для редактирования уже созданных часов, принадлежащих датчику.
Этот вызов разбрызгивает входные данные формы следующим образом:
<input name="sensor[watches_attributes][0][label]" ... />
<input name="sensor[watches_attributes][0][id]" ... />
Когда это передается, объект params
в контроллере датчика получает ассоциацию, такую как
"sensor" => {
"id"=>"1",
"watches_attributes"=> {
"0"=>{"id" => "1", "label" => "foo"},
"1"=>{"id" => "2", "label" => "bar"}
}
}
Чтобы обновление has_many
, accepts_nested_attributes_for
работало после вызова @sensor.update_attributes
, похоже, что этот ключ атрибутов действительно должен отображаться в массив.
Из того, что я видел в примерах, комбинация has_many
, accepts_nested_attributes_for
и sensor_form.fields_for
должна позволить мне передать полученный объект params
непосредственно в @sensor.update_attributes
и обновить каждый связанный объект как предназначена. Вместо этого происходит Сенсор, без ошибок, но объекты Watch не обновляются (поскольку "watches_attributes"
отображается в Hash вместо Array?) Я что-то пропустил?