ActiveAdmin——如何显示类别分类?(在树类型层次结构中)



我有一个模型category,其中包含一个名为category.parent_id的字段,该字段用于创建分类法(顶级类别与子类别)。

目前我的索引页显示的类别如下:

Top level category
Sub category
Sub category
Top category

我如何在一个适当的分类法中对它们进行排序(即首先所有顶级类别都取自数据库,然后是子类别等),并显示如下:

Top level category
-- Sub category
-- Sub category
Top category

经过几个小时的绞尽脑汁,我想出了这样一个解决方案:

ActiveAdmin可以为整个索引呈现部分,但是你可以为单个列呈现一个!

所以我们的工作是为子类别创建一个列,像这样:

    column "Sub Categories" do |category|
      children = Category.children(category.id)
      if children.present?
        render :partial => "children", :locals => { :children => children }
      end
    end

然后在_children.html.erb视图部分中,您可以像这样打印出列表:

    <% children.each do |child| %>
        <p><%= link_to child.name, edit_admin_category_path(child) %></p>
    <% end %>

您可以像这样创建一个自引用模型(在app/model/category.rb中):

belongs_to :parent, :class_name => 'Category', :foreign_key => 'parent_id'
has_many :children, :class_name => 'Category', :foreign_key => 'parent_id'

然后你可以为父目录

创建一个作用域
scope :parents, where("parent_id IS NULL")

在视图中,你可以像这样使用迭代

<ul>
<% Category.all.parents.each do |parent| %>
     <li class="parent"><%= link_to parent.name, parent %></li>
     <% parent.children.each do |child| %>
          <li class="sub"><%= link_to child.name, child %></li>
     <% end %>
<% end %>
</ul>

希望这对你有帮助!

//我读了我想读的,…我没看到这是关于主动管理的。我以为是关于ActiveRecord的- -

最新更新