1

我正在尝试在表单上设置复选框的默认值,以便除非用户未选中它,否则它将为真。通常,我可以在复选框上将 :checked 属性设置为 true

f.check_box :send_emails, :checked => true

但是,如果表单上的验证失败,并且用户取消选中该框,则在重新呈现“新”操作时将再次选中该框。即使重新渲染发生时用户对象上的值确实为假,因为我将“检查”属性设置为真,它会忽略该值。

为了解决这个问题,我将它放在控制器中以执行新操作 @user.send_emails ||= true

它看起来很丑,所以我正在寻找一种不同的方法。有人想出一些不同的东西吗?

4

1 回答 1

1

您可以在迁移中设置默认值:send_emailsto 。true

这是一个示例,创建迁移以更改字段的默认值:

class AddDefaultTrueToSendEmails < ActiveRecord::Migration
  def change
    change_column_default(:users, :send_emails, true)
  end
end
于 2012-07-03T18:14:25.257 回答