ActiveAdmin has_many 助手仅显示一条记录

问题描述 投票:0回答:1

我的应用程序中有一个非常奇怪的情况,其中 ActiveAdmin 的

form.has_many
帮助程序的一次使用按预期工作,而它的新近副本仅显示列表中的最后一条记录。

这是我的 AA 代码:

  form do |f|
    # ...
    unless resource.practices.blank?
      panel "Practices" do
        f.inputs do
          f.has_many :practices, sortable: :position, sortable_start: 0, allow_destroy: true, new_record: false, heading: false do |t|
            t.input :title, input_html: {readonly: true}
          end
        end
      end
    end
  end

尽管有三种做法,但表格上只显示了一种:

Form displaying only 1 of the 3 existing practises

这是我的模型:

class PracticeCategory < ApplicationRecord
  belongs_to :course
  has_many :practices
  #...
end

class Practice < ApplicationRecord
  belongs_to :video
  belongs_to :practice_category

  delegate :course, to: :practice_category
end

我尝试过的事情:

  • 调试表单时选择所有实践(返回 3 个)
  • 将关系更改为升序和降序练习
  • has_many
    块中进行调试。 (只调用一次)
  • 谷歌搜索(我看不到任何其他人有类似问题的记录)

它看起来不错,但由于某种原因它只作用于最近的子记录。

在 Rails 7.1.3 上使用 Activeadmin 3.2.2

ruby-on-rails activeadmin
1个回答
0
投票

终于找到了,说实话,我很惊讶没有更多的人遇到这个问题。所以我正在回答我自己的问题以留下一些面包屑。

当模型中缺少

accepts_nested_attributes_for
时,这仅渲染一条记录

class PracticeCategory < ApplicationRecord
  has_many :practices, -> { order(position: :asc) }

  accepts_nested_attributes_for :practices

现在,表单正在按照预期为每条记录呈现一个部分。

据我所知,没有任何错误或警告来指出此问题。

© www.soinside.com 2019 - 2024. All rights reserved.