【发布时间】:2012-03-27 09:51:54
【问题描述】:
我有 2 个模型用户和地址。
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 %>
我的问题是我只得到了参数中输入的最后一个州、国家、街道。
"addresses_attributes"=>{"0"=>{"street"=>"test", "state"=>"test",, "country"=>"test"},
"1"=>{"street"=>"", "state"=>"", "country"=>""}}
另外,如果有更好的方法可以做到这一点,我将不胜感激。
【问题讨论】:
-
只有最后一个是什么意思?您在此处显示的输出清楚地表明您正在接收两者。 address_attributes[0] 和addresses_attributes[1]
-
是的,但我填写了所有字段,并且只发送了最后 3 个字段。
-
示例:前 3 个字段用 'test0' 填充,后 3 个字段用 'test' 填充。
标签: ruby-on-rails ruby forms associations nested-forms