我使用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但我仍然坚持。
我做错了什么?
答案 0 :(得分:0)
您的company
对象看起来没有company_person
属性的值。可能,这是因为你的模型的设置方式。您的Company
和CompanyPerson
模型需要定义一对多关系:
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