我正在使用Simple_Form和Rails 3,这很棒。我有一个简单的问题。如果类型是幕后布尔值,我可以使用f.input
创建一个复选框。但是,我希望它被预选为真。
有没有办法通过视图来做到这一点?
答案 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 %>