嵌套表单的预填充关联呈现为空

时间:2013-04-30 09:41:23

标签: ruby-on-rails ruby-on-rails-3 form-for

我的计划清单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)。我怎样才能实现目标?

3 个答案:

答案 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