Ruby on rails has\u many关系的参数的Rails字段\u不会在参数中生成数组

Ruby on rails has\u many关系的参数的Rails字段\u不会在参数中生成数组,ruby-on-rails,has-many,fields-for,Ruby On Rails,Has Many,Fields For,我有一个型号传感器,具有多个,并接受嵌套的属性,用于与另一个型号手表的关系。在更新传感器的表单中,我有如下内容 <%= sensor_form.fields_for :watches do |watches_form| %> <%= watches_form.label :label %><br /> <%= watches_form.text_field :label %> <% end %> 对于has\u many,

我有一个型号传感器,具有多个,并接受嵌套的属性,用于与另一个型号手表的关系。在更新传感器的表单中,我有如下内容

<%= sensor_form.fields_for :watches do |watches_form| %>
   <%= watches_form.label :label %><br />
   <%= watches_form.text_field :label %>
<% end %>
对于has\u many,接受\u嵌套的\u attributes\u进行更新以处理@sensor.update\u attributes调用,似乎attributes键确实必须映射到数组


从我在示例中看到的情况来看,has_many、accepts_nested_attributes_for和sensor_form.fields_for的组合应该允许我将生成的params对象直接传递到@sensor.update_attributes,并按预期更新每个相关对象。取而代之的是传感器发生,没有错误,但是监视对象不会更新,因为监视属性映射到散列而不是数组?我错过了什么吗?

从rails 3中,您还需要添加

attr_accessible :watches_attributes

到您的传感器类

基本上接受\u嵌套的\u属性\u for is magic,并执行所有这些操作,包括为您转换属性。尽管如此,我不知道为什么你的手表对象没有正确保存。好的。那么我猜这可能是因为属性本身有问题。非常感谢。
"sensor" => {
  "id"=>"1",
   "watches_attributes"=> { 
     "0"=>{"id" => "1", "label" => "foo"},
     "1"=>{"id" => "2", "label" => "bar"}
   }
}
attr_accessible :watches_attributes