我使用的模型是Merchant,Address,Phone,&联系。关系如下:
商人:
has_many :phones, :as => :phoneable, :dependent => :destroy
has_many :addresses, :as => :addressable, :dependent => :destroy
has_many :contacts, :as => :entity, :dependent => :destroy
联系人:
has_many :phones, :as => :phoneable, :dependent => :destroy
has_many :addresses, :as => :addressable, :dependent => :destroy
我有一个表单,可以创建一个包含两个地址记录和许多电话记录的父记录。我的商家控制器新方法有这个设置代码:
@merchant.addresses.build (:address_type => "Dba")
@merchant.addresses.build (:address_type => "Mailing")
@merchant.phones.build (:phone_type => "Business")
@merchant.phones.build (:phone_type => "Fax")
实际表格有;
<%= f.fields_for :addresses do |a| %>
表示商家的两个地址,并且;
<%= f.fields_for :phones do |p| %>
商家的电话记录。
我遇到的问题是添加联系人的地址和电话记录;
<%= f.fields_for :contacts do |c| %>
<%= f.fields_for :addresses do |a| %>
<%= f.fields_for :phones do |p| %>
为每个联系人记录呈现两个地址和电话。
我只想要商家记录的两个地址。我如何获得这两个地址.build&amp; phones.build只为父级创建记录,只构建一个地址&amp;每个联系人的电话记录(将通过链接动态添加到表单中)?
答案 0 :(得分:0)
一种方法是在商家显示器上进行“新”操作,该表单显示用户要填写的两个地址。此表单的提交操作将创建商家。它还会有一个“添加联系人”的链接,这将显示另一种创建联系人的表单。联系人的“新”表格应显示一个地址和一个电话号码,供用户填写。