Установка флажка Rails от другой модели - PullRequest
0 голосов
/ 06 апреля 2010

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

Я пытался использовать

f.check_box :email_preference, :value => preferences.email_preference

но это не работает. Я использую эту страницу для создания новых записей, а также для их редактирования, поэтому, очевидно, для новых записей я бы хотел взять параметр Preferences.email_preference по умолчанию, а затем для редактирования записи использовать foo.email_preference. Есть предложения?

Ответы [ 3 ]

0 голосов
/ 06 апреля 2010

Попробуйте это:

value = @foo.new_record? ? preferences.email_preference : @foo.email_preference

f.check_box :email_preference, :value => value
0 голосов
/ 07 апреля 2010

Вы делаете это не в том месте. Представление не должно заботиться о классе предпочтений. Когда создается новый Foo, он должен установить значение: email_preference для объекта, и тогда представление просто отобразит результат этого.

Я забыл имя метода конструктора в классах ActiveRecord, или если есть обратный вызов для использования здесь. Я посмотрю.

0 голосов
/ 06 апреля 2010

Попробуйте подписку

check_box_tag :preference, :email_preference, :value => preferences.email_preference
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...