我如何告诉check_box方法不为'未选中'值添加隐藏的check_box?

Max*_*ams 14 checkbox ruby-on-rails

我正在使用rails 2.3.4,当你在form_for中的'f'对象上调用.check_box时,为'checked'值创建一个可见的复选框输入,并为'unchecked'值创建一个隐藏的复选框输入:http://railsbrain.com/api/rails-2.3.2/doc/index.html?a=M002434&name=check_box

这个问题是我在check_box上有一个validates_acceptance_of验证,如果没有检查,我得到一个包围可见复选框和隐藏复选框的field_with_errors div,以便错误消息出现两次.

在这个例子中,我不希望在'未经检查'的情况下传递一个值,所以我不希望rails添加隐藏的复选框 - 这(关闭隐藏的复选框)将解决我的问题.我无法弄清楚如何告诉它不添加隐藏的复选框.有人能告诉我吗?

我知道我可以通过制作一个check_box_tag来解决这个问题,它不会添加隐藏的"未选中"案例复选框,但是如果没有选中,我不会在复选框中包含field_with_errors.分配隐藏的领域似乎是最干净的解决方案.

谢谢 - 最多

shl*_*sky 34

在Rails 4中你可以使用 include_hidden: false

f.check_box :some_field, include_hidden: false

  • 谢谢你的回答.它在Rails 4.1中运行得很好. (2认同)

Dan*_*ice 5

从 Rails 3.2 开始,如果unchecked_value参数计算为,则隐藏字段将不会显示false

例子: f.check_box :your_field, {}, checked_value, false

请参阅 Rails 源代码:3.2 , 4.1


Pet*_*ong 3

使用 <%= check_box_tag "your_model[your_field]" %>

f.check_box 总是给你一个隐藏的领域.

  • 并不总是你可以写check_box("puppy","commands",{:multiple => true},"sit",nil) (8认同)