Подтвердить что ты не робот

Радио кнопки для логического поля, как сделать "ложь"?

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

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

<%= 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 не распознается.

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

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

Арне

4b9b3361

Ответ 1

Это он:

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]

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

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

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

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

Ответ 2

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

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

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