基本上我想使用单个表单填充同一嵌套属性对象的多个实例。这可能吗?
我有:
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条目填充参数。创建允许实例化嵌套属性的多个实例的表单的正确方法是什么?
答案 0 :(得分:-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 %>