Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 Can';t mass在Rails 3应用程序中使用cocoon和simple_表单为嵌套表单分配受保护的属性_Ruby On Rails 3_Simple Form_Nested Forms_Cocoon Gem - Fatal编程技术网

Ruby on rails 3 Can';t mass在Rails 3应用程序中使用cocoon和simple_表单为嵌套表单分配受保护的属性

Ruby on rails 3 Can';t mass在Rails 3应用程序中使用cocoon和simple_表单为嵌套表单分配受保护的属性,ruby-on-rails-3,simple-form,nested-forms,cocoon-gem,Ruby On Rails 3,Simple Form,Nested Forms,Cocoon Gem,问题: 我在提交表格时收到一条错误消息,上面写着: ActiveModel::MassAssignmentSecurity::许可记录控制器#创建时出错 无法批量分配受保护的属性:许可记录 我的设置: 我使用的是Rails 3.2.3,包括Cocoon 1.0.14和Simple_Form 2.0.2 视图: 我的app/views/admission\u records/\u form.html.haml看起来像: = simple_form_for [@admission, @record]

问题:

我在提交表格时收到一条错误消息,上面写着:

ActiveModel::MassAssignmentSecurity::许可记录控制器#创建时出错

无法批量分配受保护的属性:许可记录

我的设置:

我使用的是Rails 3.2.3,包括Cocoon 1.0.14和Simple_Form 2.0.2

视图:

我的
app/views/admission\u records/\u 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
.nested-fields
  = f.label :sbp
  = f.text_field :sbp
  ...
  = link_to_remove_association "Remove Vital Sign"
resources :patient_admissions do
  resources :admission_records
end
class PatientAdmission < ActiveRecord::Base
  has_many :admission_records, :dependent => :destroy
end
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
class VitalSign < ActiveRecord::Base
  belongs_to :admission_record
  attr_accessible # just fields that appear in the form
end
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
我的
app/views/admission\u records/\u vital\u sign\u fields.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
.nested-fields
  = f.label :sbp
  = f.text_field :sbp
  ...
  = link_to_remove_association "Remove Vital Sign"
resources :patient_admissions do
  resources :admission_records
end
class PatientAdmission < ActiveRecord::Base
  has_many :admission_records, :dependent => :destroy
end
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
class VitalSign < ActiveRecord::Base
  belongs_to :admission_record
  attr_accessible # just fields that appear in the form
end
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
我基本上想做的是,我有一个名为AdmissionRecord的资源嵌套在另一个名为PatientAdmission的资源中(
route.rb
如下所示)。我还有另一个名为
VitalSign
的资源,我希望在创建
AdmissionRecord

我的
config/routes.rb
文件如下所示:

= 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
.nested-fields
  = f.label :sbp
  = f.text_field :sbp
  ...
  = link_to_remove_association "Remove Vital Sign"
resources :patient_admissions do
  resources :admission_records
end
class PatientAdmission < ActiveRecord::Base
  has_many :admission_records, :dependent => :destroy
end
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
class VitalSign < ActiveRecord::Base
  belongs_to :admission_record
  attr_accessible # just fields that appear in the form
end
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
型号:

我的
app/models/patient\u admission.rb
看起来像:

= 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
.nested-fields
  = f.label :sbp
  = f.text_field :sbp
  ...
  = link_to_remove_association "Remove Vital Sign"
resources :patient_admissions do
  resources :admission_records
end
class PatientAdmission < ActiveRecord::Base
  has_many :admission_records, :dependent => :destroy
end
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
class VitalSign < ActiveRecord::Base
  belongs_to :admission_record
  attr_accessible # just fields that appear in the form
end
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
我的
app/models/vital_sign.rb
看起来像:

= 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
.nested-fields
  = f.label :sbp
  = f.text_field :sbp
  ...
  = link_to_remove_association "Remove Vital Sign"
resources :patient_admissions do
  resources :admission_records
end
class PatientAdmission < ActiveRecord::Base
  has_many :admission_records, :dependent => :destroy
end
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
class VitalSign < ActiveRecord::Base
  belongs_to :admission_record
  attr_accessible # just fields that appear in the form
end
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
请求:


请帮我找出哪里出了问题。我在谷歌上搜索了几个小时,查看了演示应用程序的其他示例和源代码,如中的示例和源代码,但似乎仍然无法修复此错误。如果需要任何其他信息来调试此问题,请告诉我。谢谢

好的,我刚刚遇到了这个问题,通过在模型中输入一行代码来修复它

# patient_admission.rb
Class PatientAdmission < ActiveRecord::Base
  attr_accessible :admission_record_attributes

  accepts_nested_attributes_for :admission_record

  ...
end
#病人入院.rb
类PatientMission

以下是解决方案:)

您可以为该请求添加日志吗?在最新的Rails中,默认情况下所有属性都受到保护。因此,在编写
.build(params[:acmission\u record])
时,应该将属性指定为可访问的。