我希望我的用户从预先过滤的模型实例列表中进行选择。
假设@pages
是多个页面的ActiveRecord关系。
然后在我看来,我想显示一个用户可以选择它们的表单:
[X] Page One
[ ] Page Two
[ ] Page Three
在我的下一个控制器动作中,它是类似
的参数selection => [12345 => true, 23456 => false, 56788 => false]
数字是ids。甚至更好的实例本身。
我唯一可以理解的是
<%= form_with url: validate_pages_path do |form| %>
<% Page.all.each do |page| %>
<%= check_box_tag page.id %>
<%= label_tag page.name %>
<% end %>
<%= form.submit %>
<% end %>
然后我最终得到一个类似于
的params {"utf8"=>"✓", "authenticity_token"=>"...", "992936610"=>"1", "992936644"=>"1", "commit"=>"Save "}
我没有一个嵌套pages
的模型,这肯定会让它变得非常棘手
答案 0 :(得分:3)
正如我在评论中所建议的,这里是您案例中的代码:
<%= form_with url: validate_pages_path do |form| %>
<% Page.all.each do |page| %>
# new stuff below
<%= hidden_field_tag "pages[#{page.id}]", false %>
<%= check_box_tag "pages[#{page.id}]", true %>
# /new stuff above
<%= label_tag page.name %>
<% end %>
<%= form.submit %>
<% end %>
正如您所看到的,我们使用了名称"pages[page.id]"
,因此您应该最终拥有params[:pages]
来包装整个内容。