这是为了f.check_box
在 Railsform_for
块中使用该方法。
复选框表示模型上的布尔属性。但是,我想检查等于假,不检查等于真。选中 (false) 也是默认值。
因此,如果用户将其选中并提交表单,则模型属性将为 false。
这是为了f.check_box
在 Railsform_for
块中使用该方法。
复选框表示模型上的布尔属性。但是,我想检查等于假,不检查等于真。选中 (false) 也是默认值。
因此,如果用户将其选中并提交表单,则模型属性将为 false。
请参阅文档。你应该没问题
f.check_box :something, {}, 0, 1
和分别是选中0
和1
未选中的值。
更新:我认为复选框在给定其选中/未选中值时会被正确选中/取消选中,但如果不是这种情况,您可以这样做:
f.check_box :something, { :checked => !@model.something }, 0, 1
即明确告诉复选框在属性为假时被选中,在属性为真时不选中。
但是,总是翻转值变得有点令人困惑。也许处理它的“柔道”方式是重命名属性,因此可以使用 Rails 的默认行为 false = unchecked。
第二次更新:复选框的语义非常清晰:选中意味着 true(因此是 Rails 的默认行为)。因此,如果您使用“向后”复选框,我想您的域模型存在问题。如果用户选中该框,则该用户对某事的回答是肯定的(例如“是的,我想要你的时事通讯”或“是的,我想保持登录状态”)。
如果您的模型必须翻转它,那么您的模型的属性与用户意图相比是倒退的,并且可能是双重否定的(例如,“是的,我想要你的时事通讯”变成no_newsletter = false
)。我想用简单的术语对其建模一定更简单。