Как я могу сказать методу check_box, чтобы НЕ добавить скрытый check_box для значения "unchecked"?

Я использую rails 2.3.4, который, когда вы вызываете .check_box в объекте 'f' в form_for, делает видимым флажок для значения "checked" и скрытый флажок для "непроверенных 'значение: http://railsbrain.com/api/rails-2.3.2/doc/index.html?a=M002434&name=check_box

Проблема с этим заключается в том, что у меня есть validates_acceptance_of проверки на check_box, и если он не установлен, я получаю поле field_with_errors div, обернутое вокруг видимого флажка И скрытый флажок, так что сообщение об ошибке появляется дважды.

В этом случае я не хочу, чтобы значение проходило в случае "unchecked", поэтому я не хочу, чтобы рельсы добавляли скрытый флажок - это (отключить скрытый флажок) решит мою проблему. Я не могу понять, как сказать, чтобы не добавлять скрытый флажок. Кто-нибудь может мне сказать?

Я знаю, что могу обойти это, сделав check_box_tag, который не добавляет скрытый флажок "unchecked", но тогда я не получаю файл field_with_errors, обернутый вокруг этого флажка, если он не установлен. Предоставление скрытого поля кажется самым чистым решением.

Спасибо - max

Ответ 1

использовать <%= check_box_tag "your_model[your_field]" %>

f.check_box всегда дает вам скрытое поле.

Ответ 2

В Rails 4 вы можете использовать include_hidden: false

example f.check_box :some_field, include_hidden: false

Ответ 3

С Rails 3.2 скрытое поле не будет отображаться, если аргумент unchecked_value оценивается как false.

Пример: f.check_box :your_field, {}, checked_value, false

См. источник Rails: 3.2, 4.1