使用Rails表单构建器,有没有办法让检查复选框等于假值?

时间:2013-04-05 14:32:35

标签: ruby-on-rails ruby-on-rails-3 forms

这是为了在Rails f.check_box块中使用form_for方法。

复选框表示模型上的bool属性。但是,我希望检查等于false并且取消选中等于true。 Checked(false)也是默认值。

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

1 个答案:

答案 0 :(得分:4)

the docs

你应该没问题
f.check_box :something, {}, 0, 1

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

更新:我认为在给出其选中/取消选中的值时,系统会正确选中/取消选中该复选框,但如果不是这样,则可以执行以下操作:

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

即。明确告诉复选框在属性为false时检查,并在其为真时取消选中。

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

第二次更新:复选框的语义非常清楚:Checked表示true(因此Rails的默认行为)。因此,如果您使用“向后”复选框,我想您的域模型存在问题。如果用户选中该框,则该用户正在回答肯定的内容(例如“是,我想要您的简报”或“是,我想保持登录状态”)。
如果你的模型必须翻转它,那么你的模型的属性是与用户意图相比的倒退,也许是双重否定(例如“是的,我希望你的简报”变成no_newsletter = false)。我想用简单的术语对它进行建模必须更简单。