Как использовать nested_form_fields с сгруппированными записями?
По умолчанию gem nested_form_fields отображает все существующие записи указанной ассоциации jsut под <% = f.nested_fields_for %>
тег.
Вопрос в том, как объединить nested_form_fields с группировкой модели по имени (MyModel.all.group_by(&:name)
), так что каждая группа будет отображать записи, которые принадлежат только к этой конкретной группе
-@product_categories.each do |category|
%h3= category.name
=f.add_nested_fields_link :products, 'Add Product'
-category.products.each do |product|
= f.nested_fields_for :products, product, legend: 'Product' do |product_form|
= product_form.text_field :name
1 ответ
Не нужно зацикливаться на этих продуктах во внутренней петле. Если в категории есть много товаров, вы можете сделать
- @product_categories.each do |category|
%h3= category.name
= form_for category do |f|
= f.add_nested_fields_link :products, 'Add Product'
= f.nested_fields_for :products, legend: 'Product' do |product_form|
= product_form.text_field :name
Изменить: Если вы хотите только одну форму, вы можете использовать объект более высокого уровня, который имеет много категорий, например:
= form_for @object_with_categories do |f|
= f.fields_for :categories do |f_cat|
%h3= f_cat.object.name
= f_cat.add_nested_fields_link :products, 'Add Product'
= f_cat.nested_fields_for :products, legend: 'Product' do |product_form|
= product_form.text_field :name