我的计划清单has_many :items
。
我希望我的plan_list #new有一个嵌套的表单,我可以预先填充项目。
我试过
# View
<%= form_for @plan_list do |f| %>
<%= f.fields_for :items do |item| %>
<%= item.text_field :quantity %>
<% end %>
与
# Controller
def new
@plan_list = PlanList.new
@plan_list.items.build(quantity:1)
@plan_list.items.build(quantity:2)
end
但是我只看到项目的空输入。
我也试过<%= f.fields_for @plan_list.items do |item| %>
,但它只显示一个项目(最后一个项目的数量为2)。我怎样才能实现目标?
答案 0 :(得分:0)
您应该使用关联的构建方法:
def new
@plan_list = PlanList.new
@plan_list.items << @plan_list.items.build(quantity:1)
@plan_list.items << @plan_list.items.build(quantity:2)
end
答案 1 :(得分:0)
我没有accepts_nested_attributes_for :items
。
我认为我可以在实施创建方法后添加此功能,但它对于表单创建和属性批量分配
都很重要答案 2 :(得分:0)
是的,这是必须的,应该解决问题accepted_nested_attributes_for:items
<%= form_for @plan_list do |f| %>
<%= f.fields_for :items do |item| %>
<%= item.text_field :quantity %>
<% end %>
def new
@plan_list = PlanList.new
@plan_list.items.build(quantity:1)
@plan_list.items.build(quantity:2)
end