Module: SortableTable::App::Controllers::ApplicationController::ClassMethods

Defined in:
lib/sortable_table/app/controllers/application_controller.rb

Instance Method Summary collapse

Instance Method Details

#sortable_attributes(*args) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/sortable_table/app/controllers/application_controller.rb', line 14

def sortable_attributes(*args)
  mappings           = args.last.is_a?(Hash) ? args.pop : {}
  acceptable_columns = args.collect(&:to_s) + mappings.keys.collect(&:to_s)
  
  define_method(:sort_order) do |*default| 
    direction = params[:order] == 'ascending' ? 'asc' : 'desc'
    column    = params[:sort] || 'created_on'
    if params[:sort] && acceptable_columns.include?(column)
      column = mappings[column.to_sym] || column
      "#{column} #{direction}"
    else
      "#{acceptable_columns.first} #{default_sort_direction(default)}"
    end
  end
end