我有一个与belongs_to
有location
关联的Event对象:
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
但是,当我编辑这个新创建的记录的位置时,位置记录不会被编辑,而是在数据库中插入新的位置记录。
我的问题是,如何确保在编辑位置时(从父级事件表单),它将更新属于该位置对象的属性,而不是创建新的位置对象。
答案 0 :(得分:1)
我找到了解决方案,就是将:update_only => true
添加到关联中。模型代码变为:
class Event < ActiveRecord::Base
belongs_to :location, :update_only => true
accepts_nested_attributes_for :location
end