У меня есть 2 модели пользователя и адреса.Вложенные формы Rails
class User < ActiveRecord::Base
has_many :addresses
accepts_nested_attributes_for :addresses
end
class Address < ActiveRecord::Base
belongs_to :user
end
Мой контроллер
def new
@user = User.new
@user.addresses << Address.new
@user.addresses << Address.new
end
def create
@user = User.new(params[:user])
if @user.save
#do something
else
render 'new'
end
end
И мой взгляд
<%= form_for @user do |f| %>
<%= f.label :name %>
<%= f.text_field :name %>
<%= f.fields_for :addresses do |a| %>
<p> Home </p>
<%= a.text_field :state %>
<%= a.text_field :country%>
<%= a.text_field :street %>
<p> Work </p>
<%= a.text_field :state %>
<%= a.text_field :country%>
<%= a.text_field :street %>
<% end %>
<% end %>
<% end %>
Моя проблема в том, я получаю только последнее состояние, страна, улица введенную в Params.
"addresses_attributes"=>{"0"=>{"street"=>"test", "state"=>"test",, "country"=>"test"},
"1"=>{"street"=>"", "state"=>"", "country"=>""}}
Также, если есть лучший способ сделать это, я буду благодарен за любые предложения.
Что значит только последнее? вывод, который вы показываете здесь, ясно показывает, что вы получаете оба. addresses_attributes [0] и addresses_attributes [1] – Faisal
да, но я заполнил все поля и только последние 3, которые были отправлены. – lesce
Пример: первые 3 поля, заполненные «test0», а последние 3 - «test». – lesce