我在Rails3中使用了Simple_Form,它非常棒。我有一个简单的问题。如果类型是boolean,我可以在后台使用f.input创建一个复选框。但是,我希望它被预先选择为true。有没有办法通过视图来实现这一点?
f.input
e4eetjau1#
如果你不想,或者不能更新你的迁移来做'PerfectlyNormal'的答案,那么你可以添加以下到你的f.input的末尾:
:input_html => { :checked => true }
因此,它将变成:
= f.input :some_flag, :input_html => { :checked => true }
g0czyy6m2#
最好的方法是在模型中设置默认值,如下所示
create_table :my_table do |t| ... t.boolean :my_boolean, :default => true ... end
simple_form将在其上拾取,并将复选框设置为默认选中。一种更简单的方法是按照Dave所说的那样做,并将值强制为1,但是如果验证失败,您再次显示表单时,它仍然会被选中,而不管表单提交时的外观如何。
simple_form
ippsafx73#
对我来说,只选中一个复选框,其值为**“无”**
<%= f.input :notify, label: "Notification", as: :check_boxes, collection: ["None", "Daily", "Weekly", "Monthly", "Quarterly", "Yearly"], :item_wrapper_class => 'inline', :checked => ["None", true] %>
pkmbmrz74#
我只是偶然发现了这篇文章,对我有效的方法与最新的答案类似--但更短。只需使用所需的设置初始化对象:
def new Object.new(my_boolean: true) end
uqzxnwby5#
在我看来,实现这一点的方法是在控制器中设置属性的值:@一些对象。一些标志= 1
6pp0gazn6#
这应该行得通:
= f.input :some_flag, :input_html => { :value => '1' }
91zkwejq7#
如果您执行以下操作,如评分最高的答案(如@PerfectlyNormal所示),您实际上是在硬编码 * 每个页面加载 * 的状态:
= f.input :some_flag, :input_html => { :checked => true } # don't do this
如果您使用的是Rails样式的服务器验证,则会产生意外的副作用,即在验证失败时重置用户的选择。如果默认值是静态的,则在模型中默认它是理想的。但是在某些情况下,默认值是由某些业务规则驱动的,因此需要在运行时设置它。例如,在我的情况下,我希望将复选框默认为true,但仅适用于某些类型的组织。您需要的是只有在没有设置 * 的情况下才使用默认值 *,否则使用用户选择的值。
- is_checked = @org.is_special.nil? ? true : @org.is_special? = f.input :some_flag, :input_html => { :checked => is_checked }
ni65a41a8#
对于Rails 6+,您可以简单地执行以下操作:
<%= f.check_box :remember_me, checked: true %>
8条答案
按热度按时间e4eetjau1#
如果你不想,或者不能更新你的迁移来做'PerfectlyNormal'的答案,那么你可以添加以下到你的f.input的末尾:
因此,它将变成:
g0czyy6m2#
最好的方法是在模型中设置默认值,如下所示
simple_form
将在其上拾取,并将复选框设置为默认选中。一种更简单的方法是按照Dave所说的那样做,并将值强制为1,但是如果验证失败,您再次显示表单时,它仍然会被选中,而不管表单提交时的外观如何。
ippsafx73#
对我来说,只选中一个复选框,其值为**“无”**
pkmbmrz74#
我只是偶然发现了这篇文章,对我有效的方法与最新的答案类似--但更短。只需使用所需的设置初始化对象:
uqzxnwby5#
在我看来,实现这一点的方法是在控制器中设置属性的值:
@一些对象。一些标志= 1
6pp0gazn6#
这应该行得通:
91zkwejq7#
如果您执行以下操作,如评分最高的答案(如@PerfectlyNormal所示),您实际上是在硬编码 * 每个页面加载 * 的状态:
如果您使用的是Rails样式的服务器验证,则会产生意外的副作用,即在验证失败时重置用户的选择。
如果默认值是静态的,则在模型中默认它是理想的。但是在某些情况下,默认值是由某些业务规则驱动的,因此需要在运行时设置它。例如,在我的情况下,我希望将复选框默认为true,但仅适用于某些类型的组织。
您需要的是只有在没有设置 * 的情况下才使用默认值 *,否则使用用户选择的值。
ni65a41a8#
对于Rails 6+,您可以简单地执行以下操作: