2010-11-29 56 views
2

“collection_select,多=>真正的”多“check_box”选项如何更换collection_select(与:multiple => true)带的check_box选项,列表使得存在在每个对象check_box选项采集?替换:在Rails的

是否有优雅使用表单构建器实现此目的的方法(即不使用*_tag助手)?我想尽可能地依靠ActiveRecord的内置功能...

回答

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选项防止滑轨从同名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"> 

当表单提交,这些参数将包含的检查选项的值的数组。