Module: ElaineCrud::SortingConcern

Extended by:
ActiveSupport::Concern
Included in:
BaseController
Defined in:
lib/elaine_crud/sorting_concern.rb

Overview

Concern for sorting functionality in ElaineCrud controllers Provides methods for URL parameter-based sorting with validation

Instance Method Summary collapse

Instance Method Details

#current_sort_columnSymbol

Get current sort column from params or default

Returns:

  • (Symbol)

    The sort column



11
12
13
14
15
16
17
# File 'lib/elaine_crud/sorting_concern.rb', line 11

def current_sort_column
  if params[:sort].present? && valid_sort_column?(params[:sort])
    params[:sort].to_sym
  else
    self.class.default_sort_column || :id
  end
end

#current_sort_directionSymbol

Get current sort direction from params or default

Returns:

  • (Symbol)

    The sort direction (:asc or :desc)



21
22
23
24
25
26
27
# File 'lib/elaine_crud/sorting_concern.rb', line 21

def current_sort_direction
  if params[:direction].present? && %w[asc desc].include?(params[:direction])
    params[:direction].to_sym
  else
    self.class.default_sort_direction || :asc
  end
end

#toggle_sort_direction(current_direction) ⇒ Symbol

Get the opposite direction for toggling sort

Parameters:

  • current_direction (Symbol)

    Current sort direction

Returns:

  • (Symbol)

    Opposite direction



32
33
34
# File 'lib/elaine_crud/sorting_concern.rb', line 32

def toggle_sort_direction(current_direction)
  current_direction.to_sym == :asc ? :desc : :asc
end