【问题标题】:How to use nested_form_fields with grouped records?如何将nested_form_fields 与分组记录一起使用?
【发布时间】:2015-04-24 09:53:48
【问题描述】:

默认nested_form_fields gem 会在<% = f.nested_fields_for %> 标签下呈现指定关联jsut 的所有现有记录。

问题是如何将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

【问题讨论】:

  • 您想按主要型号名称或产品协会名称进行分组?不太明白。
  • 按产品类别。

标签: ruby-on-rails ruby-on-rails-4 nested-forms activeview


【解决方案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

【讨论】:

  • 但这会创建很多表单,不是吗?如何通过一次提交来提交更改?
  • 是的,确实每个表单都需要单独提交。只有当类别也是字段集时,只有一个表单才有效。我会试着举个例子。
猜你喜欢
  • 2021-06-16
  • 1970-01-01
  • 2022-01-07
  • 1970-01-01
  • 2021-02-24
  • 2016-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多