1
在我的Rails 3.0應用程序中,我有一個客戶端模型和一個多態地址模型。根據下面的代碼,客戶端可以有很多地址。我希望我的表單一次更新單個客戶端地址。我只能看到[addresses_attributes]出現,如果我允許同時編輯所有客戶端的地址。有沒有解決的辦法?Rails 3 - 如何編輯單個嵌套多態資源?
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 %>
感謝,威廉你能解釋一下,但更明確該怎麼做和什麼樣的變化,我會需要對我的模型,控制器和視圖? – julesie 2012-01-30 08:44:15
我假設你想分割多態類型。我在上面的答案中提供了細節。 – Wilhelm 2012-01-30 12:07:30
我可能會困惑你,但我不相信我想要通過多態類型進行分割。我有一個有三個不同地址的客戶端。每個的「addressable_type」字段都是「客戶端」。我的問題是,如果我希望他們能夠自己編輯他們的第一個地址,我不能得到* _attributes位出現。 – julesie 2012-01-30 15:28:45