私は現在、nested_forms ジェムを使用しており、プロパティに複数の家主を追加できるようにしようとしています。
現時点では、関連付けは非常に深いです: プロパティ -> 家主 -> 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ジェムがこれほど多くのレベルの関連付けまたは関連付けのタイプをサポートしていないのは問題ですか?
ありがとう!
編集 変更が行われました:
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 %>