Радио кнопки для логического поля, как сделать "ложь"?
В настоящее время я пытаюсь вставить в 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 не распознается.
Кто-нибудь знает, как это сделать правильно?
Заранее спасибо
Арне
Ответы
Ответ 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?'
Объяснение здесь