Resting Pug logo Resting Pug

Description

Transforms a string like “-id,name” to a hash { id: :desc, name: :asc }

Tip

Override #permitted_fields_for_sort to set allowed fields to sort.
Override #default_sort_params to set default sort params.

Used in

Use

Source code

# lib/resting_pug/params.rb

def sort_params
  sort_hash = nil
  if params[:sort]
    sort_array = params[:sort].split(',')
    sort_array = sort_array.map do |field|
      is_desc = field.split('-').count > 1
      name = field.split('-').last
      { name: name.to_sym, is_desc: is_desc }
    end
    sort_array.select! do |field|
      permitted_fields_for_sort.include? field[:name]
    end
    sort_array.each do |field|
      sort_hash ||= {}
      sort_hash[field[:name]] = field[:is_desc] ? :desc : :asc
    end
  end
  sort_hash || default_sort_params
end
Find me on GitHub