如何使用simple_form预选关联复选框

时间:2011-03-31 13:49:39

标签: ruby-on-rails checkbox associations simple-form

使用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][]

4 个答案:

答案 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