fields_for无法创建对象

时间:2015-12-22 19:44:38

标签: ruby-on-rails forms form-for nested-form-for

我使用form_for和fields_for来创建公司,地址和公司人员。

以下是公司模型的相关部分:

class Company < ActiveRecord::Base
has_many :company_people
  accepts_nested_attributes_for :company_people
has_many :addresses, as: :location
  accepts_nested_attributes_for :addresses

我已将相关参数添加到公司控制器:

def company_params
  params.require(:company).permit(:name, :email, :phone,
  :website, :ein, :description,
  {company_person_params: [:first_name, :last_name, :phone, :email]},
  addresses_attributes: [:id, :street, :city, :zipcode])
end

这是公司控制人员开展工作的部分:

@company = Company.new
@company.assign_attributes(company_params)
@company.agencies << Agency.first
@company.company_people.build
@company.company_people << @company_person
if @company.save
  flash.notice = "Success!"   

这适用于地址 - 由&#34; @ company.assign_attributes(company_params)&#34;处理。 它已保存,我可以在确认页面上打印没问题。但是公司人员并没有发生。一切都没有例外。我遵循了这个指南:http://guides.rubyonrails.org/form_helpers.html#nested-forms但我仍然坚持。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

您的company对象看起来没有company_person属性的值。可能,这是因为你的模型的设置方式。您的CompanyCompanyPerson模型需要定义一对多关系:

class Company < ActiveRecord::Base
  has_many :company_people
  #whatever else
end

class CompanyPerson < ActiveRecord::Base
  belongs_to :company
  #whatever else
end

这假设您的主键是默认的id。如果没有,你需要告诉Rails他们是什么。

您可以在此处找到有关ActiveRecord关联的更多信息:http://guides.rubyonrails.org/association_basics.html