Active Admin Orderable
This gem extends ActiveAdmin so that your index page's table rows can be orderable via a drag-and-drop interface.
Prerequisites
This extension assumes that you're using one of the following on any model you want to be sortable.
ActiveRecord
class Page < ActiveRecord::Base
acts_as_list
end
Mongoid
class Page < ActiveRecord::Base
include Mongoid::Orderable
orderable
end
Usage
Add it to your Gemfile
gem "activeadmin-orderable"
Include the JavaScript in active_admin.js.coffee
#= require activeadmin-orderable
Include the Stylesheet in active_admin.css.scss
@import "activeadmin-orderable"
Configure your ActiveAdmin Resource
ActiveAdmin.register Page do
config.sort_order = 'position_asc' # assumes you are using 'position' for your acts_as_list column
config.paginate = false # optional; drag-and-drop across pages is not supported
orderable # creates the controller action which handles the sorting
index do
orderable_handle_column # inserts a drag handle
# use a user-defined URL for ordering
orderable_handle_column url: :sort_admin_section_path
# alternative form with lambda
orderable_handle_column url: -> (resource) { compute_url_from_resource(resource) }
# other columns...
end
show do |c|
attributes_table do
row :id
row :name
end
panel 'Contents' do
table_for c.collection_memberships do
orderable_handle_column
column :position
column :collectable
end
end
end
end
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request