使用Rails Simple_form预选复选框

时间:2010-11-07 03:50:18

标签: ruby-on-rails ruby-on-rails-3 checkbox

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

有没有办法通过视图来做到这一点?

7 个答案:

答案 0 :(得分:97)

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

:input_html => { :checked => true }

所以,它会变成:

= f.input :some_flag, :input_html => { :checked => true }

希望有所帮助!

答案 1 :(得分:16)

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

create_table :my_table do |t|
  ...
  t.boolean :my_boolean, :default => true
  ...
end

simple_form将会选中,并设置默认情况下要选中的复选框。

更简单的方法是按照Dave的说法执行此操作,并将该值强制为1,但如果验证失败,并再次显示该表单,则仍会检查该表单,无论表单何时显示提交。

答案 2 :(得分:8)

我工作的是只检查一个复选框,其值为“无”

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

答案 3 :(得分:3)

我只是偶然发现了这篇文章,对我有用的东西与最新答案类似 - 但更短。只需使用希望的设置初始化对象:

def new
  Object.new(my_boolean: true)
end

答案 4 :(得分:2)

这应该有效:

= f.input :some_flag, :input_html => { :value => '1' }

答案 5 :(得分:2)

在我看来,执行此操作的方法是在控制器中设置属性的值:

@ some_object.some_flag = 1

答案 6 :(得分:0)

对于Rails 6+,您只需执行以下操作即可:

<%= f.check_box :remember_me,  checked: true %>