使用Rails Simple_form预选复选框

Dre*_*rew 27 checkbox ruby-on-rails ruby-on-rails-3

我正在使用Simple_Form和Rails 3,这很棒.我有一个简单的问题.我可以创建一个复选框,f.input如果类型是幕后布尔值.但是,我希望它被预选为真.

有没有办法通过视图这样做?

Gav*_*Gav 98

如果您不想或不能更新您的迁移以执行'PerfectlyNormal的答案',那么您可以将以下内容添加到f.input的末尾:

:input_html => { :checked => true }
Run Code Online (Sandbox Code Playgroud)

所以,它会成为:

= f.input :some_flag, :input_html => { :checked => true }
Run Code Online (Sandbox Code Playgroud)

希望有所帮助!


Per*_*mal 16

最好的方法是在模型中设置默认值,例如

create_table :my_table do |t|
  ...
  t.boolean :my_boolean, :default => true
  ...
end
Run Code Online (Sandbox Code Playgroud)

simple_form将拿起,并设置为默认检查的复选框.

一种更简单的方法是按照Dave的说法进行操作,并将值强制为1,但如果验证失败,并且再次显示该表单,则无论表单何时提交,它都将被检查.

  • 实际上这是有效的,但它涉及更多的数据库上的默认值.我认为这里最好的选择是只在客户端通过以下方式选择值:input_html => {:checked => true} (3认同)

anu*_*sha 8

它为我工作,只检查一个复选框,值为"无"

<%= f.input :notify, label: "Notification", as: :check_boxes, collection: ["None", "Daily", "Weekly", "Monthly", "Quarterly", "Yearly"], :item_wrapper_class => 'inline', :checked => ["None", true] %>
Run Code Online (Sandbox Code Playgroud)

  • 对于 :checked =&gt; ["None", true],不需要 true,因为 :checked 会在提供的数组中查找具有值的 HTML 输入元素。忽略 true 效果很好。```&lt;%= f.input :notify, label: "通知", as: :check_boxes, collection: ["无", "每日", "每周", "每月", "季度", "每年"] , :item_wrapper_class =&gt; '内联', :checked =&gt; ["无"] %&gt;``` (2认同)