我目前正在使用nested_forms gem,我正在努力为房产添加多个房东。
目前协会非常深刻: 财产 - >房东 - > Contact_Detail - >地址
在我的属性控制器中,我正在构建关联,并且正确显示初始表单。但是,使用“添加字段”按钮后,没有字段。我知道它与未构建的对象有关,但我无法理解为什么。
这是我的物业模型:
belongs_to :address
belongs_to :estate_agent
belongs_to :property_style
has_and_belongs_to_many :landlord
has_and_belongs_to_many :tenancy_agreement
attr_accessible :landlord_attributes, :address_attributes, :estate_agent_attributes,
:property_style_attributes, :sector, :reference , :occupied, :available_date, :property_style_attributes,...
accepts_nested_attributes_for :landlord, :address, :estate_agent, :property_style, :tenancy_agreement
这是属性控制器中的新功能:
def new
@property = Property.new
@property.build_address
@property.landlord.build.build_contact_detail.build_address
@property.estate_agent_id = current_user.estate_agent_id
respond_to do |format|
format.html # new.html.erb
format.json { render json: @property }
end
end
我在这方面做了不少尝试,但是看不出我出错的地方,是否nested_form gem不支持这么多级别的关联或关联类型?
谢谢!
修改的 所做的更改:
belongs_to :address
belongs_to :estate_agent
belongs_to :property_style
has_and_belongs_to_many :landlords
has_and_belongs_to_many :tenancy_agreements
attr_accessible :landlords_attributes, :address_attributes, :estate_agent_attributes,
:property_style_attributes, :sector, :reference , :occupied, :available_date, :property_style_attributes,...
accepts_nested_attributes_for :landlords, :address, :estate_agent, :property_style, :tenancy_agreements
属性控制器:
@property.landlords.build.build_contact_detail.build_address
斗地主模特
has_and_belongs_to_many :properties
以下是我的观点:
<%= nested_form_for(@property) do |f| %>
<% if @property.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@property.errors.count, "error") %> prohibited this property from being saved:</h2>
<ul>
<% @property.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<h2>Landlords</h2>
<%= f.fields_for :landlords %>
<p><%= f.link_to_add "Add a Landlord", :landlords %></p>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
答案 0 :(得分:0)
除非你已经将“房东”指定为irregular inflection,否则Rails会认为它是单数的。多对多关联应以复数形式声明。
尝试将多对多关联更改为:
has_and_belongs_to_many :landlords
has_and_belongs_to_many :tenancy_agreements
您还需要将对这些调用的所有调用也更改为复数。此外,您必须将accepts_nested_attributes_for
更改为landlords
,将attr_accessible
从landlord_attributes
更改为landlords_attributes
。
答案 1 :(得分:0)
我试图使用awesome-nested-forms和cocoon,但它仍然不起作用。
最后,我通过在partial中而不是在控制器中构建对象找到了一种解决方法。像这样:
<% f.object.build_contact_detail.build_address %>
我希望这有助于其他人!