0

我有一个模型“Window”,它与另一个模型“WindowItems”有 has_many 关系。WindowItems 具有自引用关系(因此它可以具有自身的嵌套子级)。

我有一个像这样的窗口的 activeadmin 资源:

show :title => :name do

attributes_table do
  row :name
  row :column_position
  row :window_type
  row :column_count
  row :active
  row :page_position
  row :collapsible
  row :icon_id
  row :created_at
  row :updated_at
end

div :class => "accordion" do
  if window.window_items.count > 0
    panel "Window Items (#{window.window_items.count})" do

      table_for window.window_items do
        column "Name" do |a|
          link_to a.name, admin_window_item_path(a.id)
        end
        column :active
        column :link
        column :icon
        column :window
      end
    end
  end
end # end accordion

结尾

所以现在,这是显示所有窗口项目,但我只希望它显示父窗口项目(关闭子窗口项目)。

如何过滤显示在面板“window items do”块上的记录?

谢谢

4

2 回答 2

0

如果您将 parent_id 添加到 WindowItem 模型,我认为您的问题将很容易解决。所有嵌套的子项都会有 parent_id 引用他们的父项,而您的顶级项目将没有 parent_id。

于 2013-02-22T06:43:06.413 回答
0

我终于弄明白了。我只是在模型中添加了一个范围,然后引用了该范围。

范围:

scope :is_parent, where('parent_window_item_id IS NULL || parent_window_item_id = ""')

在 activeadmin 资源中:

table_for window.window_items.is_parent do
....
end
于 2013-02-25T22:15:05.443 回答