Sha256: 9ba879abd0b156a28843c6452d163f90368cfa4dae0b0a37631e876beaed0acd

Contents?: true

Size: 1.52 KB

Versions: 35

Compression:

Stored size: 1.52 KB

Contents

module Rao
  # Usage:
  #
  #     # app/controllers/posts_controller.rb
  #     class PostsController < ApplicationController
  #       include Rao::ResourcesController::ActsAsListConcern
  #     end
  #
  #     # config/routes.rb
  #     Rails.application.routes.draw do
  #       resources :posts do
  #         post :reposition, on: :member
  #       end
  #     end
  #
  module ResourcesController::ActsAsListConcern
    extend ActiveSupport::Concern

    def reposition
      @resource = load_resource
      @dropped_resource = load_resource_scope.find(params[:dropped_id])
      @dropped_resource.set_list_position(@resource.position)
      position = @dropped_resource.position < @resource.position ? :before : :after

      label_methods = [:human, :name, :title, :email, :to_s]

      target_resource_label = nil
      label_methods.each do |method_name|
        if @resource.respond_to?(method_name)
          target_resource_label = @resource.send(method_name)
          break
        end
      end

      inserted_resource_label = nil
      label_methods.each do |method_name|
        if @dropped_resource.respond_to?(method_name)
          inserted_resource_label = @dropped_resource.send(method_name)
          break
        end
      end

      redirect_to after_reposition_location, notice: I18n.t("acts_as_list.flash.actions.reposition.inserted_#{position}", target_resource: target_resource_label, inserted_resource: inserted_resource_label)
    end

    private

    def after_reposition_location
      collection_path
    end
  end
end

Version data entries

35 entries across 35 versions & 1 rubygems

Version Path
rao-resources_controller-0.0.52.pre app/concerns/rao/resources_controller/acts_as_list_concern.rb
rao-resources_controller-0.0.51.pre app/concerns/rao/resources_controller/acts_as_list_concern.rb
rao-resources_controller-0.0.50.pre app/concerns/rao/resources_controller/acts_as_list_concern.rb
rao-resources_controller-0.0.49.pre app/concerns/rao/resources_controller/acts_as_list_concern.rb
rao-resources_controller-0.0.48.pre app/concerns/rao/resources_controller/acts_as_list_concern.rb
rao-resources_controller-0.0.47.pre app/concerns/rao/resources_controller/acts_as_list_concern.rb
rao-resources_controller-0.0.46.pre app/concerns/rao/resources_controller/acts_as_list_concern.rb
rao-resources_controller-0.0.45.pre app/concerns/rao/resources_controller/acts_as_list_concern.rb
rao-resources_controller-0.0.44.pre app/concerns/rao/resources_controller/acts_as_list_concern.rb
rao-resources_controller-0.0.43.pre app/concerns/rao/resources_controller/acts_as_list_concern.rb
rao-resources_controller-0.0.42.pre app/concerns/rao/resources_controller/acts_as_list_concern.rb
rao-resources_controller-0.0.41.pre app/concerns/rao/resources_controller/acts_as_list_concern.rb
rao-resources_controller-0.0.40.pre app/concerns/rao/resources_controller/acts_as_list_concern.rb
rao-resources_controller-0.0.39.pre app/concerns/rao/resources_controller/acts_as_list_concern.rb
rao-resources_controller-0.0.38.pre app/concerns/rao/resources_controller/acts_as_list_concern.rb
rao-resources_controller-0.0.37.pre app/concerns/rao/resources_controller/acts_as_list_concern.rb
rao-resources_controller-0.0.36.pre app/concerns/rao/resources_controller/acts_as_list_concern.rb
rao-resources_controller-0.0.35.pre app/concerns/rao/resources_controller/acts_as_list_concern.rb
rao-resources_controller-0.0.34.pre app/concerns/rao/resources_controller/acts_as_list_concern.rb
rao-resources_controller-0.0.33.pre app/concerns/rao/resources_controller/acts_as_list_concern.rb