【问题标题】:Checkbox within Rails Form: Default to checked if value not setRails 表单中的复选框:如果未设置值,则默认为选中
【发布时间】:2016-06-22 20:39:54
【问题描述】:

我的 rails 表单中有以下复选框字段:

<div class="form-group">
  <%= f.label :education, "Education Employee): " %>
  <%= f.check_box :education%>
</div>

复选框默认不被选中。我想要它做的是默认被检查,除非该值已经设置为真/假。如果该值已设置为 true/false,则显示该设置值的复选框值。换句话说:如果设置值为nil则默认为被勾选。

我尝试了这个,但它对我不起作用:

<div class="form-group">
  <%= f.label :education, "Education Employee: " %>
  <%= f.check_box :education, checked: true if f.object.education.nil? %>
</div>

我没有从checkbox documentation 获得太多信息。

【问题讨论】:

  • 为什么不将默认的true 添加到数据库列中?或者在初始化实例时设置默认值。
  • @spickermann 我可以添加一个数据库约束,但我想看看是否可以将它保留在应用程序级别。
  • @spickermann 是的!谢谢!没有想到在实例中初始化默认值。谢谢!

标签: ruby-on-rails ruby checkbox


【解决方案1】:

我希望在数据库中设置一个默认值。但是,当您想将其保留在应用程序级别时(正如您在评论中所写的那样),您可以在初始化实例后设置默认值。

# in your model
after_initialize :set_defaults

private
def set_defaults
  self.education = true if education.nil?
end

【讨论】:

    【解决方案2】:

    也许更好的方法是在初始迁移中设置默认值,例如:

     def change
        add_column :model, :education, :boolean, default: true
     end
    

    或者如果它是一个现有的列:

    def change
        change_column_default :model, :education, true
    end
    

    我知道这是一篇旧帖子,但也许它会在未来帮助某人

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-18
      • 2016-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-19
      相关资源
      最近更新 更多