Reorganise model data with a drag and drop tree/list structure.
Sample demo available at: https://github.com/dalpo/rails_admin_nestable_demo
To enable rails_admin_nestable, add the following to your Gemfile:
gem 'rails_admin_nestable'Add in your config/initializers/rails_admin.rb initializer the configuration:
RailsAdmin.config do |config|
config.actions do
# root actions
dashboard # mandatory
# collection actions
index # mandatory
new
export
history_index
bulk_delete
# member actions
show
edit
delete
history_show
show_in_app
# Add the nestable action for configured models
nestable
end
endYou could choose between two different configurations for your model:
To use this configuration, you need to organize your tree model with Ancestry.
Otherwise your model have to respond to the parent, arrange and children methods.
The nestable_tree methods supports the following options:
position_field: (symbol) default =>nilmax_depth: (integer) default =>nilenable_callback: (boolean) default =>false
In your config/initializers/rails_admin.rb initializer:
RailsAdmin.config do |config|
config.actions do
...
end
config.model MyModel do
nestable_tree({
position_field: :position,
max_depth: 3
})
end
endTo use this configuration, you need a position field
The nestable_list methods supports the following options:
position_field: (symbol) default:positionenable_callback: (boolean) default =>false
In your config/initializers/rails_admin.rb initializer:
RailsAdmin.config do |config|
config.actions do
...
end
config.model MyModel do
nestable_list true
end
endAuthorization with CanCan
Sample ability:
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new
if user.admin?
can :access, :rails_admin
can :dashboard
if user.role? :superadmin
can :manage, :all
end
if user.role? :editor
can :edit, :all
can :nestable, :all
end
end
end
endThis project rocks and uses MIT-LICENSE.
