Радиокнопки для логического поля, как сделать «ложь»? - PullRequest
22 голосов
/ 06 ноября 2010

В настоящее время я пытаюсь вставить несколько простых переключателей true / false в Rails 3, но не могу найти способ заставить переключатель вставлять "false".

Мой код следующий:

<%= f.radio_button :accident_free, true %><label for="auction_accident_free_true">ja</label>
<%= f.radio_button :accident_free, false %><label for="auction_accident_free_false">nein</label>

Я уже пробовал:

  • 1/0
  • "1" / "0"
  • true / false
  • "true" / "false"
  • "yes" / "no"

но, похоже, ничего не работает для значения false.Для моего поля установлено значение

validates_presence_of :accident_free

, и я всегда получаю сообщение о том, что оно должно быть заполнено, чтобы продолжить, при нажатии кнопки false.При нажатии кнопки true она работает нормально, но false не распознается.

Кто-нибудь знает, как это сделать правильно?

Заранее спасибо

Arne

Ответы [ 2 ]

53 голосов
/ 06 ноября 2010

Вот оно:

http://apidock.com/rails/ActiveRecord/Validations/ClassMethods/validates_presence_of

validates_presence_of () подтверждает, что указанные атрибуты не являются пустыми (как определено в Object # blank?)

Если вы хотите проверить наличие логического поля (где действительные значения - true и false), вы можете использовать validates_inclusion_of :field_name, :in => [true, false]

Это связано с тем, что Object # blank? обрабатывает логические значения: false.blank? # => true

Я попробовал ваш пример, используя эшафот и "1" и "0", как в

<%= f.radio_button :foo, "0" %>
<%= f.radio_button :foo, "1" %>

и они работали.

2 голосов
/ 13 февраля 2015

Я недавно пришел к другому решению для этого:

validates_presence_of :accident_free, :if => 'accident_free.nil?'

Объяснение здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...