我在使用Simple_Form与Rails 3,它很棒。我有一个简单的问题。如果类型是幕后布尔值,我可以使用f.input
创建一个复选框。但是,我希望它被预选为真实。使用Rails 3预选复选框Simple_form
有没有办法通过视图做到这一点?
我在使用Simple_Form与Rails 3,它很棒。我有一个简单的问题。如果类型是幕后布尔值,我可以使用f.input
创建一个复选框。但是,我希望它被预选为真实。使用Rails 3预选复选框Simple_form
有没有办法通过视图做到这一点?
最好的办法是设置在你的模型中的默认值,像
create_table :my_table do |t|
...
t.boolean :my_boolean, :default => true
...
end
这simple_form
会挑上,并设置复选框默认选中。
更简单的方法就是像Dave说的那样做,只需强制将值设为1,但如果验证失败,并且您再次显示该表单,则仍然会检查该表单,而不管表单在表单显示时的样子已提交。
这应该工作:
= f.input :some_flag, :input_html => { :value => '1' }
-1因为真的会搞乱任何数据库表格编辑,所以这真的不是好建议。 – 2011-07-19 16:01:50
真的吗?老兄问如何在视图中设置它。它从哪里说他将要编辑它? – 2011-08-25 01:00:48
Hi Dave,在rails中,视图代表浏览器中显示的前端html。当Drew说“如果这个类型是幕后布尔类型”,这似乎暗示这是违背活动记录模型的,并且对任何活动记录模型使用复选框似乎意味着他希望编辑/更新属性。我会避免低估你,因为这看起来有点小气。 – 2011-08-27 19:08:49
如果你不想,或无法更新您的迁移做“PerfectlyNormal的答案,那么你可以添加以下到您的f.input结束:
:input_html => { :checked => true }
所以,它会成为:
= f.input :some_flag, :input_html => { :checked => true }
希望有所帮助!
它的工作对我来说这只检查一个复选框与“无”
<%= f.input :notify, label: "Notification", as: :check_boxes, collection: ["None", "Daily", "Weekly", "Monthly", "Quarterly", "Yearly"], :item_wrapper_class => 'inline', :checked => ["None", true] %>
我只是绊了这篇文章,什么工作对我来说是类似于最新的应答值 - 但短。刚刚初始化对象与所希望的设置:
def new
Object.new(my_boolean: true)
end
实际上它可以工作,但它涉及更多的数据库默认值。我认为这里最好的选择是只在客户端通过以下方式选择值:input_html => {:checked => true} – coorasse 2014-03-10 17:09:29
这是一个更好的答案。 – allesklar 2014-08-12 09:48:50