В моем приложении Rails 3.0 у меня есть модель Client и модель полиморфных адресов. Согласно приведенному ниже коду клиент может иметь много адресов. Я хотел бы, чтобы моя форма обновляла один адрес клиента за раз. Может показаться, что [address_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
View
<%= 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 %>