如何使用collection_select
选项列表替换:multiple => true
(check_box
},以便集合中的每个对象都有check_box
选项?
是否有优雅方式使用表单构建器(即不使用*_tag
帮助程序)实现此方法?我想尽可能地依靠ActiveRecord的内置功能......
答案 0 :(得分:1)
我认为没有一种内置的“优雅”方式来做到这一点。
这个railscast应该可以帮助您:
答案 1 :(得分:0)
你可以这样做(例如使用HAML)。
%fieldset
Colors I like
- %w[red blue].each do |color|
= f.label color
= f.check_box :colors_liked, {multiple: true}, color, nil
最后的nil
选项可以防止Rails使用0的相同名称构建隐藏的复选框,如果您要进行多项选择,这绝对不是您想要的。
这会产生:
<label for="colors_liked_red">Red</label>
<input id="my_form_colors_liked_red" \
name="my_form[colors_liked][]" type="checkbox" value="red">
<label for="colors_liked_blue">Blue</label>
<input id="my_form_colors_liked_blue" \
name="my_form[colors_liked][]" type="checkbox" value="blue">
提交表单时,参数将包含已检查选项的值数组。