У меня есть форма form_for, и внутри нее я используя флажок помощника формы. У модели есть поле, которое имеет логическое значение, но я хотел бы иметь возможность отображать его в своей форме с точки зрения его обратного, так как я думаю, что пользователям легче это понять.
Есть ли способ для меня, чтобы иметь вспомогательный объект Rails действует так, как будто булево поле модели перевернуто?
Пример:
<% form_for :user do |form| %>
<%= form.check_box :privacy_disabled %>
<% end %>
В этом примере Модель пользователя имеет логическое поле privacy_disabled
. Я хотел бы отобразить это в виде проверки здесь, чтобы включить конфиденциальность.
Вспомогательная функция флажка имеет возможность устанавливать свои проверенные и непроверенные значения, но инвертирование этих данных, по-видимому, не заполняет должным образом флажок с предварительно сохраненным значением.
Вот как я решил эту проблему, я был близок к своей первой попытке:
<%= form.check_box :privacy_disabled,
{:checked => !@user.privacy_disabled},
0,
1 %>
Значения, возвращаемые флажком, переворачиваются, и проверяется, начинается ли это вручную. тоже перевернулся.
Не самое элегантное решение, но вы можете сделать что-то вроде следующего:
Добавьте эти методы в свою модель пользователя:
def privacy_enabled = (val)
self.privacy_disabled = val == "0"
конец
def privacy_enabled
! privacy_disabled
конец
Измените форму на:
<% = form.check_box: privacy_enabled%>
Опять же, не изящно, но работает.