Параметры Rails fields_for для отношения has_many не дают массив в параметрах - PullRequest
0 голосов
/ 24 марта 2012

У меня есть модель 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?) Я что-то пропустил?

1 Ответ

0 голосов
/ 29 сентября 2013

Из рельсов 3 также нужно добавить

attr_accessible :watches_attributes

к вашему классу датчиков

...