This gem extends ActiveAdmin so that your index page's table rows can be orderable via a drag-and-drop interface.
This extension assumes that you're using one of the following on any model you want to be sortable.
class Page < ActiveRecord::Base
acts_as_list
end
class Page < ActiveRecord::Base
include Mongoid::Orderable
orderable
end
gem "activeadmin-orderable"
#= require activeadmin-orderable
@import "activeadmin-orderable"
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
- 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