has_one(class_nameオプション付き)とbelongs_toの関係を通して2つの子オブジェクトに値を設定するフォームを作ろうとしています。しかし、フォームから値を入力して送信すると、異なる値を入力しても両方の子オブジェクトが同じ値を持ちます。has_one with:class_name、belongs_to relationが正しく属性をレールに設定していない3.2.3
私はこれら2つのモデルを持っています。 は次のように部分的に使用して
class Route < ActiveRecord::Base
attr_accessible :name, :destination_attributes, :origin_attributes
has_one :origin, :class_name=>"Place"
has_one :destination, :class_name=>"Place"
accepts_nested_attributes_for :origin, :destination
end
class Place < ActiveRecord::Base
attr_accessible :address, :lat, :lng, :name, :route_id
belongs_to :route, :foreign_key => "route_id"
end
そして作られたフォーム(2人の子供は、上記の「起源」と、そのクラスの名前である「場所」「目的地」を示すオブジェクト)。
ルート/ _form.html.erb
<%= form_for(@route) do |f| %>
<div class="field">
<%= f.label :name %><br />
<%= f.text_field :name %>
<br />
<%= render :partial => "places/nested_places_form", :locals => {record_name: :origin, place_object: @route.origin, parent_form: f} %>
<br />
<%= render :partial => "places/nested_places_form", :locals => {record_name: :destination, place_object: @route.destination, parent_form: f} %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
場所/ nested_places_form.html.erb
<%= parent_form.fields_for record_name, place_object do |t| %>
<%= record_name %>
<% if place_object.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@place.errors.count, "error") %> prohibited this place from being saved:</h2>
<ul>
<% @place.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= t.label :name %><br />
<%= t.text_field :name %>
</div>
<div class="field">
<%= t.label :lat %><br />
<%= t.text_field :lat %>
</div>
<div class="field">
<%= t.label :lng %><br />
<%= t.text_field :lng %>
</div>
<% end %>
私が述べたように、出発地と目的地の属性は常に終わります空白に異なる値を入れてフォームから送信しても同じです。
どうすればこの作品を作成できますか?
私はそれが不可能であることを知らなかった、これは私が望んでいたものです!私が試してみます!どうもありがとうございました!! – Ryo