2012-04-20 3 views
3

У меня есть 2 модели. Член и обследованиеКак правильно настроить направляющие 3 вложенных атрибута

member.rb следующего

Class Member < ActiveRecord::Base 
    has_one :survey, :dependent => :destroy 
    accepts_nested_attributes_for :survey 

    attr_accessible :fname,:lname, :address, :city, :state, :zip, :email, :phone, :phone_alt, :e_contact, :e_contact_phone, :physician, :physician_phone, :chiropractor, :chiropractor_phone, :password, :password_confirmation, :remember_me, :survey_attributes 

end 

survey.rb следующего

Class Survey < ActiveRecord::base 
    belongs_to :member 
end 

однако всякий раз, когда я пытаюсь создать элемент с обследованием атрибутов я получаю

ActiveModel::MassAssignmentSecurity::Error: Can't mass-assign protected attributes: surveys

Я тестирую это через консоль.

+0

Вы пробовали опубликовать фактическую форму? –

+0

возможно это: survey_attributes в attr_accessible? – tmaximini

+0

Да, фактическая форма производит тот же вывод и удаление survey_attributes не изменяет результат. – Kosmonaut

ответ

2

С has_one ассоциации доступный вызов следует читать:

attr_accessible :survey_attributes 

Публикуемое вами потребность PARAMS быть вложенными, например, так:

params = { :member => { :name => 'Jack', :survey_attributes => { :attribute => 'value' } } } 

В форме убедитесь, что вы» правильно встраивать вложенные отношения, т. е. вы должны использовать:

= form_for @member do |f| 
    ... 
    = f.fields_for :survey do |s| 
    ... 

Если у вас есть такие настройки, как, так это должно работать. Если это не догоняет вашу ошибку, то, пожалуйста, покажите журнал того, что вы пытаетесь в консоли, и не работает.

См. #accepts_nested_attributes_for в Rails API для получения дополнительной информации.

+0

Моя форма создавала неверный атрибут для опроса (опросов). Обновлена ​​форма для survey_attributes, и все хорошо. Благодаря! – Kosmonaut

Смежные вопросы