【发布时间】:2011-05-06 05:02:04
【问题描述】:
我在 Rails 3 中使用Simple_Form,它很棒。我有一个简单的问题。如果类型在幕后是布尔值,我可以使用f.input 创建一个复选框。但是,我希望它被预选为 true。
有没有办法通过视图做到这一点?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 checkbox
我在 Rails 3 中使用Simple_Form,它很棒。我有一个简单的问题。如果类型在幕后是布尔值,我可以使用f.input 创建一个复选框。但是,我希望它被预选为 true。
有没有办法通过视图做到这一点?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 checkbox
如果您不想或无法更新迁移以执行“PerfectlyNormal”的答案,则可以将以下内容添加到 f.input 的末尾:
:input_html => { :checked => true }
所以,它会变成:
= f.input :some_flag, :input_html => { :checked => true }
希望有帮助!
【讨论】:
最好的方法是在你的模型中设置默认值,比如
create_table :my_table do |t|
...
t.boolean :my_boolean, :default => true
...
end
simple_form 会选择哪个,并将复选框设置为默认选中。
一个更简单的方法是按照 Dave 所说的那样做,只需将值强制为 1,但如果验证失败,并且您再次显示表单,它仍然会被检查,无论它在表单显示时的外观如何已提交。
【讨论】:
它对我有用,它只选中一个复选框,值为 "None"
<%= f.input :notify, label: "Notification", as: :check_boxes, collection: ["None", "Daily", "Weekly", "Monthly", "Quarterly", "Yearly"], :item_wrapper_class => 'inline', :checked => ["None", true] %>
【讨论】:
<%= f.input :notify, label: "Notification", as: :check_boxes, collection: ["None", "Daily", "Weekly", "Monthly", "Quarterly", "Yearly"], :item_wrapper_class => 'inline', :checked => ["None"] %>
我只是偶然发现了这篇文章,对我有用的方法与最新答案相似 - 但更短。只需使用希望的设置初始化对象:
def new
Object.new(my_boolean: true)
end
【讨论】:
这应该可行:
= f.input :some_flag, :input_html => { :value => '1' }
【讨论】:
input_html: { checked: true }
在我看来,这样做的方法是在控制器中设置属性的值:
@some_object.some_flag = 1
【讨论】:
对于 Rails 6+,您可以这样做:
<%= f.check_box :remember_me, checked: true %>
【讨论】: