我的应用程序中有一个非常奇怪的情况,其中 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
尽管有三种做法,但表格上只显示了一种:
这是我的模型:
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
我尝试过的事情:
has_many
块中进行调试。 (只调用一次)它看起来不错,但由于某种原因它只作用于最近的子记录。
在 Rails 7.1.3 上使用 Activeadmin 3.2.2
终于找到了,说实话,我很惊讶没有更多的人遇到这个问题。所以我正在回答我自己的问题以留下一些面包屑。
当模型中缺少
accepts_nested_attributes_for
时,这仅渲染一条记录
class PracticeCategory < ApplicationRecord
has_many :practices, -> { order(position: :asc) }
accepts_nested_attributes_for :practices
现在,表单正在按照预期为每条记录呈现一个部分。
据我所知,没有任何错误或警告来指出此问题。