0

本质上,我想使用单个表单填充同一嵌套属性对象的多个实例。这可能吗?

我有:

class Parent < ActiveRecord::Base
  has_many :childs
  acceptes_nested_attributes_for :childs
end

class Child < ActiveRecord::Base
  belongs_to :parent
end

然后是 parents/new.html.erb 的视图

<%= form_for @parent, url: parents_path(@parent), method: :post do |f| %>
  // basic fields for parent
  <%= f.fields_for :child do |ff| %>
    <%= ff.title %>
  <% end %>
<% end %> 

效果很好,但是如果我想做类似的事情:

<%= form_for @parent, url: parents_path(@parent), method: :post do |f| %>
  // basic fields for parent
  <%= f.fields_for :child do |ff| %>
    <%= ff.title %>
  <% end %>
  <%= f.fields_for :child do |ff| %>
    <%= ff.title %>
  <% end %>
<% end %> 

它仅使用最后一个 fields_for 条目填充参数。创建允许实例化嵌套属性的多个实例的表单的正确方法是什么?

4

1 回答 1

-1

更好的方法是在您的控制器操作中:

def new
  @parent = Parent.find(1)

  # Build 2 children
  2.times do 
    @parent.children.build
  end
end

那么在你看来:

<%= form_for @parent, url: parents_path(@parent), method: :post do |f| %>
  // basic fields for parent
  <%= f.fields_for :children do |ff| %>
    <%= ff.title %>
  <% end %>
<% end %>

更新:

没有真正回答这个问题,但建议基于 Rails 约定进行一些更改。由于"child".pluralize返回孩子,我认为应该更新模型以使用has_many :children,以便正确解析类名"child".pluralize.classify

class Parent < ActiveRecord::Base
  has_many :children
  acceptes_nested_attributes_for :children
end

以及相应的视图变化:

<%= form_for @parent, url: parents_path(@parent), method: :post do |f| %>
  // basic fields for parent
  <%= f.fields_for :children do |ff| %>
    <%= ff.title %>
  <% end %>
<% end %>
于 2013-08-19T03:47:23.433 回答