【发布时间】:2012-01-30 01:06:57
【问题描述】:
在我的 Rails 3.0 应用程序中,我有一个客户端模型和一个多态地址模型。根据下面的代码,客户端可以有多个地址。我希望我的表单一次更新一个客户地址。如果我允许同时编辑所有客户的地址,我似乎只能让 [addresses_attributes] 出现。有没有办法解决这个问题?
class Client < ActiveRecord::Base
has_many :addresses, :as => :addressable, :dependent => :destroy
accepts_nested_attributes_for :addresses
class Address < ActiveRecord::Base
belongs_to :addressable, :polymorphic => true
客户端控制器
def edit
@client = Client.find(params[:id])
@addresses = @client.addresses
if params[:address]
@address = @client.addresses.find(params[:address])
else
@addresses ? @address = @addresses.first : @address = []
end
end
def update
@client = Client.find(params[:id])
@client.update_attributes(params[:client])
redirect_to client_path(@client)
end
查看
<%= form_for @client do |f| %>
<%= render :partial => 'form', :locals => {:f => f} %>
<%= f.fields_for @address do |addresses_attributes| %>
<%= render :partial => 'addresses/fields', :locals => {:f => addresses_attributes} %>
<% end %>
<%= f.submit %>
<% end %>
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 nested edit polymorphism