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"]}
]}