1

問題:

フォームを送信すると、次のようなエラーメッセージが表示されます。

ActiveModel :: MassAssignmentSecurity :: AdmissionRecordsController#createのエラー

保護された属性を一括割り当てできません:admission_record

私のセットアップ:

Rails 3.2.3を使用しており、Cocoon1.0.14やSimple_Form2.0.2などの追加のgemがあります。

景色:

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ネストされたフォームを介して(cocoonと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

コントローラー:

私のメソッドnewcreateメソッドは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にあるようなデモアプリの他の例とソースコードを調べましたが、それでもこのエラーを修正できないようです。この問題をデバッグするために必要な他の情報があれば、私に知らせてください。ありがとう!

4

1 に答える 1