在Rails表单中显示多个嵌套属性

时间:2014-12-04 08:17:04

标签: ruby-on-rails forms nested one-to-many

我一直在寻找Rails 4.1应用程序中的解决方案,所以这是我的问题:

在Rails应用程序中,我有我的模型User和Adress。

 class User < ActiveRecord::Base 
       has_many :adresses
       accepts_nested_attributes_for :adresses

 class Adress < ActiveRecord::Base
       belongs_to :user
       accepts_nested_attributes_for :user

在我的表单中,我为用户制作了一个form_tag,没问题。

但是,我如何以表格形式向最终用户显示2个地址字段?

我使用<%= f.fields_for :adress %>来显示一个,没关系。但是,如果我显示两个表格(因此用户可以输入2个地址),则它们具有相同的名称,请求帖子只保留一个。

我在http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-fields_for

阅读了该文档

但是,我仍然没有得到它。

有没有正确的方法呢?

谢谢

2 个答案:

答案 0 :(得分:0)

我建议你在新动作中准备两个地址,将它们添加到使用中,然后在形式中用foreach重新编写它。

我在这里找到了这种解决方案:http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-fields_for

由于你有多个地址,我认为foreach是可行的。

答案 1 :(得分:0)

所以,为了帮助Rails中的任何人,并采用与我相同的方式:

在您的控制器中:

 @user = User.new
 @user.adresses = Adress.new, Adress.new

在您看来,表格:

<%= form_for @user do |f| %>
  <%= f.fields_for :adresses do |a| %>
    <%= wp.text_field :name %>
  <% end %>
<% end %>

将为地址打印两次名称字段。

(再次感谢@NickCatib)