Ruby on rails Rails:是否嵌套了多个:到\u ID?

Ruby on rails Rails:是否嵌套了多个:到\u ID?,ruby-on-rails,associations,has-many,Ruby On Rails,Associations,Has Many,在一个页面上,我可能有一个视频,然后复选框添加多个狗到它。很简单(如下所示) 视图: 但我不知道怎么做,就是有多个视频,每个视频都有多条狗 我目前有: <% @videos.each do |video| %> <%= fields_for "item[]", video do |f| %> <%= f.hidden_field :id, :index => nil %> <%= f.text_field :title, :in

在一个页面上,我可能有一个视频,然后复选框添加多个狗到它。很简单(如下所示)

视图:

但我不知道怎么做,就是有多个视频,每个视频都有多条狗

我目前有:

<% @videos.each do |video| %>
  <%= fields_for "item[]", video do |f| %>
    <%= f.hidden_field :id, :index => nil %>
    <%= f.text_field :title, :index => nil%>
    <%= f.text_area :body, :index => nil %>

    <% video.dogs.each do |dog| %>
      <%= check_box_tag "item[][video[dog_ids][]]", dog.id %>
    <% end %>
  <% end %>
<% end %>

零%>
零%>
零%>
但是当我这样做时,
dogs\u id
在提交时总是
nil


你知道我做错了什么吗?

这样一个设置为“item[]”和
f.text\u字段:title,:index=>nil产生:

<input id="item__name" name="item[][title]" size="30" type="text" value="vid1">
这将在参数中生成结果:

{"item"=> [
  {"title"=>"vid1", "dog_ids"=>["1", "2"]},
  {"title"=>"vid2", "dog_ids"=>["2"]},
  {"title"=>"vid3", "dog_ids"=>["2", "3"]}
]}

字段必须保留(由于表单中的其他字段)。但是在您的示例中,您实际上没有像使用
那样使用
字段,我的观点是您必须在复选框名称中指定视频id,并且对于当前的代码示例,
项[]
部分是不必要的。尽管如此,我还是更新了代码以反映您的示例。只是更新了我的原始帖子以显示上下文
item[]
是必需的,因为有多个视频,我需要使用
update\u属性更新所有表单字段
我必须使用
check\u-box\u标记
,因为Rails文档中提到了关于类似数组的参数的问题:我假设这就是您遇到的错误。因此,您当前的示例仍然不起作用。
<input id="item__name" name="item[][title]" size="30" type="text" value="vid1">
<% @videos.each do |video| %>
  <%= fields_for "item[]", video do |f| %>
    <%= f.text_field :title, :index => nil %>
    <% video.dogs.each do |dog| %>
      <%= check_box_tag "item[][dog_ids][]", dog.id %> <%= Dog.name %>
    <% end %>
    <br>
  <% end %>
<% end %>
{"item"=> [
  {"title"=>"vid1", "dog_ids"=>["1", "2"]},
  {"title"=>"vid2", "dog_ids"=>["2"]},
  {"title"=>"vid3", "dog_ids"=>["2", "3"]}
]}