0

这是为了f.check_box在 Railsform_for块中使用该方法。

复选框表示模型上的布尔属性。但是,我想检查等于假,不检查等于真。选中 (false) 也是默认值。

因此,如果用户将其选中并提交表单,则模型属性将为 false。

4

1 回答 1

3

请参阅文档。你应该没问题

f.check_box :something, {}, 0, 1

和分别是选中01未选中的值。

更新:我认为复选框在给定其选中/未选中值时会被正确选中/取消选中,但如果不是这种情况,您可以这样做:

f.check_box :something, { :checked => !@model.something }, 0, 1

即明确告诉复选框在属性为假时被选中,在属性为真时不选中。

但是,总是翻转值变得有点令人困惑。也许处理它的“柔道”方式是重命名属性,因此可以使用 Rails 的默认行为 false = unchecked。

第二次更新:复选框的语义非常清晰:选中意味着 true(因此是 Rails 的默认行为)。因此,如果您使用“向后”复选框,我想您的域模型存在问题。如果用户选中该框,则该用户对某事的回答是肯定的(例如“是的,我想要你的时事通讯”或“是的,我想保持登录状态”)。
如果您的模型必须翻转它,那么您的模型的属性与用户意图相比是倒退的,并且可能是双重否定的(例如,“是的,我想要你的时事通讯”变成no_newsletter = false)。我想用简单的术语对其建模一定更简单。

于 2013-04-05T14:53:23.577 回答