Module: ActiveAdmin::SortableTree::ControllerActions
- Defined in:
- lib/active_admin/sortable_tree/controller_actions.rb
Instance Attribute Summary collapse
-
#sortable_options ⇒ Object
Returns the value of attribute sortable_options.
Instance Method Summary collapse
Instance Attribute Details
#sortable_options ⇒ Object
Returns the value of attribute sortable_options.
4 5 6 |
# File 'lib/active_admin/sortable_tree/controller_actions.rb', line 4 def @sortable_options end |
Instance Method Details
#sortable(options = {}) ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/active_admin/sortable_tree/controller_actions.rb', line 6 def sortable( = {}) .reverse_merge! :sorting_attribute => :position, :parent_method => :parent, :children_method => :children, :roots_method => :roots, :tree => false, :max_levels => 0, :protect_root => false, :collapsible => false, #hides +/- buttons :start_collapsed => false, :sortable => true # BAD BAD BAD FIXME: don't pollute original class @sortable_options = # disable pagination config.paginate = false collection_action :sort, :method => :post do resource_name = active_admin_config.resource_name.to_s.underscore.parameterize('_') records = params[resource_name].inject({}) do |res, (resource, parent_resource)| res[resource_class.find(resource)] = resource_class.find(parent_resource) rescue nil res end errors = [] ActiveRecord::Base.transaction do records.each_with_index do |(record, parent_record), position| record.send "#{[:sorting_attribute]}=", position if [:tree] record.send "#{[:parent_method]}=", parent_record end errors << {record.id => record.errors} if !record.save end end if errors.empty? head 200 else render json: errors, status: 422 end end end |