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