百科.dev
全部条目AI 编程趋势榜开源项目技术资讯提交条目
登录
< 返回工具列表
A

active_admin-sortable_tree

> 编程语言
开源

以拖放方式将 ActiveAdmin 索引显示为嵌套树

162 stars0 点赞1 次浏览
访问官网GitHub

工具介绍

以拖放方式将 ActiveAdmin 索引显示为嵌套树

ActiveAdmin::SortableTree

This gem adds a tree and a list view to your ActiveAdmin resource index, both sortable via drag'n'drop.

Installation

  1. Add SortableTree to your Gemfile; then bundle install

    gem "active_admin-sortable_tree", "~> 2.0.0"
    
  2. Add a require to your JavaScript manifest app/assets/javascripts/active_admin.js

    //= require active_admin/sortable
    
  3. Add an import in your stylesheet manifest app/assets/stylesheets/active_admin.scss

    @import "active_admin/sortable";
    

Usage (Tree)

Admin:

# app/admin/page.rb
ActiveAdmin.register Page do
  sortable tree: true

  index :as => :sortable do
    label :title # item content
    actions
  end
end

Model: ActiveAdmin::SortableTree is agnostic to the tree implementation. All you have to do is expose a sorting attribute and a few tree methods (:parent, :children and :roots). Let's say you use Ancestry:

class Page  :rootify
end

You can configure these methods if you need:

ActiveAdmin.register Page do
  sortable tree: true,
           sorting_attribute: :position,
           parent_method: :parent,
           children_method: :children,
           roots_method: :roots,
           roots_collection: proc { current_user.pages.roots }
  # …
end

The option roots_collection provides full control on how to find the root nodes of your sortable tree and is evaluated within the context of the controller. Please note that roots_collection will override what is specified in roots_method.

Usage (List)

Admin:

# app/admin/page.rb
ActiveAdmin.register Page do
  sortable

  index :as => :sortable do
    label :title # item content
    actions
  end
end

Model: Sortable list assumes you have a :position field in your resource. Of course it's configurable:

ActiveAdmin.register Page do
  sortable tree: false, # default
           sorting_attribute: :my_position_field
  # …
end

Note: If you are using the acts_as_list gem to manage a :position field (not required, but allows for other nice programmatic manipulation of ordered model lists), you must ensure a zero-based index for your list using the top_of_list option:

class Page  :block do |page|
    # item content
  end
end

Model: Same as list view (see above)

Customization

Full options list with defaults

…

Actions

In IndexAsSortable you can add custom actions (with or without the defaults):

index :as => :sortable do
  actions defaults: false do |page|
    link_to "Custom action", my_custom_path(page)
  end
end

Ajax Callback Config

It exposes three Ajax Events: ajaxDone, ajaxFail and ajaxAlways, which correspond to jQuery ajax callbacks: done, fail and always.

To subscribe Ajax callback:

ActiveAdminSortableEvent.add('ajaxDone', function (){
  // do what you want
})

Upgrading to SortableTree 2.0 from 1.0

Upgrading from SortableTree 1.x requires manually specifying assets in your app/assets/javascripts/active_admin.js and app/assets/stylesheets/active_admin.scss files.

Dependencies

ActiveAdmin::SortableTree 2.0 supports ActiveAdmin 1.0.0+. For previous versions of ActiveAdmin use older SortableTree versions from the 1.x branch.

Note: If you experience issues with drag and drop capability, you may need to specify the version for your ActiveAdmin installation. It is reported working using v0.6.6, or if you are using v1.0.0.pre, it is reported working on this commit b3a9f4b or later.

# Gemfile
gem 'activeadmin', github: 'activeadmin', ref: 'b3a9f4b'

Suppressing warnings from Active Admin

As of Active Admin 1.1.0, config.register_stylesheet and config.register_javascript have been deprecated. ActiveAdmin::SortableTree uses these interfaces to register required assets automatically. Because of this, you may see a deprecation warning:

DEPRECATION WARNING: Active Admin: The `register_javascript` config is deprecated and will be removed
in v2. Import your "active_admin/sortable.js" javascript in the active_admin.js.
 (called from  at config/environment.rb:5)

You could opt out of it by setting config.aa_sortable_tree.register_assets to false:

# config/application.rb
config.aa_sortable_tree.register_assets = false

Semantic Versioning

ActiveAdmin::SortableTree follows semantic versioning.

Alternatives

  • Active Admin Sortable

Copyright

Copyright © 2013 Francesco Disperati, Cantiere Creativo. See the file MIT-LICENSE for details. See the full list list of contributors.

Issues· 18 开放

查看全部 Issues在 GitHub 打开

暂无开放 Issues,或尚未同步最近议题。

> 标签

Rubyactiveadmin

暂无评论,来聊聊你的看法吧

> 工具信息

发布日期2026年8月1日
最后更新2026年9月18日
分类编程语言
定价开源

> 相关工具

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言