Я получаю сообщение об ошибке при подаче моей формы, которая говорит:
ActiveModel :: MassAssignmentSecurity :: Ошибка в AdmissionRecordsController # создать
Может не массовый правопреемником защищенные атрибуты: admission_record
Моя установка:
Я использую Rails 3.2.3 с дополнительными камнями, включая Cocoon 1.0.14 и 2.0.2 Simple_Form
The View:
Мои app/views/admission_records/_form.html.haml
выглядит :
= simple_form_for [@admission, @record] do |f|
= f.simple_fields_for :vital_signs, @record.vital_signs.build do |vs|
= render :partial => "vital_sign_fields", :locals => { :f => vs }
= link_to_add_association "Add Vital Signs", f, :vital_signs
= f.submit
И мой app/views/admission_records/_vital_sign_fields.html.haml
выглядит следующим образом:
.nested-fields
= f.label :sbp
= f.text_field :sbp
...
= link_to_remove_association "Remove Vital Sign"
То, что я в основном пытаюсь сделать то, что у меня есть ресурс под названием AdmissionRecord вложен в другом ресурсе под названием PatientAdmission (route.rb
показан ниже). У меня есть еще один ресурс, называемый VitalSign
, который я хочу, чтобы иметь возможность создавать с помощью вложенной формы (с использованием кокона и simple_form) при создании AdmissionRecord
Моего config/routes.rb
файла выглядит следующим образом:
resources :patient_admissions do
resources :admission_records
end
моделей:
Мои app/models/patient_admission.rb
выглядит следующим образом:
class PatientAdmission < ActiveRecord::Base
has_many :admission_records, :dependent => :destroy
end
Мой app/models/admission_record.rb
выглядит следующим образом:
class AdmissionRecord < ActiveRecord::Base
belongs_to :patient_admission
has_many :vital_signs, :dependent => :destroy
accepts_nested_attributes_for :vital_signs, :rejects_if => :all_blank, :allow_destroy => true
attr_accessible :vital_signs_attributes
end
И мой app/models/vital_sign.rb
выглядит следующим образом:
class VitalSign < ActiveRecord::Base
belongs_to :admission_record
attr_accessible # just fields that appear in the form
end
Контроллер:
В new
и create
методы в моем AdmissionRecordsController
выглядит следующим образом:
before_filter do
@admission = PatientAdmission.find(params[:patient_admission_id])
end
def new
@record = @admission.admission_records.build
end
def create
@record = @admission.admission_records.build(params[:admission_record])
@vital_sign = @record.vital_signs.build(params[:vital_signs])
@vital_sign.save
if @record.save
# Flash success and redirect to the right place
else
# Flash error and render :new
end
end
мольба:
Пожалуйста, помогите мне найти, где я буду неправильно. Я много работал в Интернете и смотрел другие примеры и исходный код для демонстрационных приложений, таких как найденные в cocoon_simple_form_demo, но по-прежнему не может исправить эту ошибку. Если есть какая-либо другая информация, необходимая для отладки этой проблемы, сообщите мне. Благодаря!
Не могли бы вы добавить журналы для этого запроса? Также в последних Rails все атрибуты по умолчанию защищены. Поэтому, когда вы пишете '.build (params [: admission_record])', вы должны указывать атрибуты как доступные. –