使用simple_form
时,我有这段代码:
= simple_form_for :report do |f|
= f.association :presets,
:collection => @account.presets.collect{ |p| [p.name, p.id] },
:as => :check_boxes
如何知道此preset
的ID是否在preset
内传递,我该如何预先选择特定的params[:preset_id]
复选框?复选框的HTML name
属性为report[preset_ids][]
。
答案 0 :(得分:29)
根据simple_form文档:
关联助手只是调用 在引擎盖下输入,所以选择 可用于:选择,:无线电和 :check_boxes也可用 协会。另外,你可以 全部用手指定集合 连同提示:
f.association :company, :collection => Company.active.all(:order => 'name'), :prompt => "Choose a Company"
所以,你应该使用这样的东西:
= simple_form_for :report do |f|
= f.association :presets,
:collection => @account.presets.collect{ |p| [p.name, p.id] },
:as => :check_boxes,
:checked => params[:preset_id]
我没有使用simple_form的经验,但这可能会有所帮助:)
答案 1 :(得分:25)
每个人的更新。 :选择的选项对我不起作用。我用过:
:checked => [2, 3]
希望它有所帮助。
答案 2 :(得分:1)
f.association真的做了诀窍,谢谢:),预选,保存,以及一切,我没有足够的声誉来投票给你答案(@ claudio-acciaresi)这就是我在这里评论的原因..
这是我的代码:
<%= f.association :association, collection: Model.all,
value_method: :id, label_method: :name,
as: :check_boxes, include_blank: false %>
替换符号:与模型中当前的has_many关联。 替换Model.all,以获取源数据。
希望它对其他人有用:)
问候。
答案 3 :(得分:0)
不要忘记将params [:preset_id]强制转换为整数:
params[:preset_id].to_i