Ruby on Rails: используйте form_for для модели и переверните значение формы

У меня есть форма form_for, и внутри нее я используя флажок помощника формы. У модели есть поле, которое имеет логическое значение, но я хотел бы иметь возможность отображать его в своей форме с точки зрения его обратного, так как я думаю, что пользователям легче это понять.

Есть ли способ для меня, чтобы иметь вспомогательный объект Rails действует так, как будто булево поле модели перевернуто?

Пример:

<% form_for :user do |form| %>
  <%= form.check_box :privacy_disabled %>
<% end %>

В этом примере Модель пользователя имеет логическое поле privacy_disabled . Я хотел бы отобразить это в виде проверки здесь, чтобы включить конфиденциальность.

Вспомогательная функция флажка имеет возможность устанавливать свои проверенные и непроверенные значения, но инвертирование этих данных, по-видимому, не заполняет должным образом флажок с предварительно сохраненным значением.

6
задан William Jones 19 August 2010 в 23:18
поделиться

2 ответа

Вот как я решил эту проблему, я был близок к своей первой попытке:

<%= form.check_box :privacy_disabled, 
                   {:checked => !@user.privacy_disabled}, 
                   0,
                   1 %>

Значения, возвращаемые флажком, переворачиваются, и проверяется, начинается ли это вручную. тоже перевернулся.

12
ответ дан 8 December 2019 в 12:57
поделиться

Не самое элегантное решение, но вы можете сделать что-то вроде следующего:

  1. Добавьте эти методы в свою модель пользователя:

     def privacy_enabled = (val)
    self.privacy_disabled = val == "0"
    конец
    def privacy_enabled
     ! privacy_disabled
    конец
    
  2. Измените форму на:

     <% = form.check_box: privacy_enabled%>
    

Опять же, не изящно, но работает.

6
ответ дан 8 December 2019 в 12:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: