加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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 %>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读