Предварительно заполненная ассоциация для вложенной формы отображается пустой

Мой ПланЛист 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 ответа

Решение

У меня не было accepts_nested_attributes_for :items,

Я думал, что смогу добавить это позже, когда реализую метод create, но это важно как для создания формы, так и для массового назначения атрибутов.

Да, это должно и должно решить проблему accepts_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

Вы должны использовать метод построения ассоциаций как:

  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
Другие вопросы по тегам