ruby-on-rails – 嵌套表单Rails
发布时间:2020-12-17 02:54:08 所属栏目:百科 来源:网络整理
导读:我有2个型号用户和地址. class User ActiveRecord::Base has_many :addresses accepts_nested_attributes_for :addressesendclass Address ActiveRecord::Base belongs_to :userend 我的控制器 def new @user = User.new @user.addresses Address.new @user.
我有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"=>""}} 此外,如果有更好的方法,我会感激任何建议. 解决方法
rails API表示fields_for将在地址集合中的每个元素上自行重复.
我建议在你的地址中添加一种标签(如工作,家庭等).然后它应该自己工作.使用此标签,当您想要添加更多地址时,您会更灵活一些. <%= f.fields_for :addresses,@user.addresses do |a| %> <p> <%= a.object.label %> </p> <%= a.text_field :state %> <%= a.text_field :country%> <%= a.text_field :street %> <% end %> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |