1

belongs_toに関連付けられた Event オブジェクトがありますlocation

class Event < ActiveRecord::Base
  belongs_to :location
  accepts_nested_attributes_for :location  
end

私のイベント フォームでは、ネストされた属性を使用して場所のフォームを表示します。からのロケーション フォームの関連ビットevents/_form.html.erb:

<%= f.fields_for :location do |lf| %>  
  <%= f.label 'Location', :class => 'control-label' %>
  <%= lf.text_field :name  %>
  <%= lf.text_field :address %>
<% end %>

次のように新しいイベントを作成します。

  def new
    @event = Event.new
    @event.build_location
  end

ただし、この新しく作成されたレコードの場所を編集すると、場所レコードは編集されず、代わりに新しい場所レコードがデータベースに挿入されます。

私の質問は、(親イベント フォームから) 場所を編集するときに、新しい場所オブジェクトを作成する代わりに、場所オブジェクトに属する属性を更新するようにするにはどうすればよいかということです。

4

1 に答える 1

1

解決策を見つけました。それは:update_only => true、関連付けに追加することでした。モデルのコードは次のようになります。

class Event < ActiveRecord::Base
  belongs_to :location, :update_only => true  
  accepts_nested_attributes_for :location
end
于 2013-06-20T13:20:35.457 に答える