Предварительно заполненная ассоциация для вложенной формы отображается пустой
Мой ПланЛист 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