module ActionCrud::Pagination

Public Instance Methods

set_per_page(limit) click to toggle source
# File lib/action_crud/pagination.rb, line 14
def set_per_page(limit)
  self.per_page = limit.to_i
end

Private Instance Methods

paginate(records) click to toggle source
# File lib/action_crud/pagination.rb, line 31
def paginate(records)
  if records.respond_to? :paginate
    records.paginate(pagination_params.select { |k, _v| k.in? [:page, :per_page] })
  else
    records
  end
end
pagination_meta(records) click to toggle source
# File lib/action_crud/pagination.rb, line 39
def pagination_meta(records)
  {
    current_page:  pagination_params.fetch(:page, 1).to_i,
    next_page:     records.try(:next_page),
    previous_page: records.try(:previous_page),
    total_pages:   records.try(:total_pages),
    total_entries: records.try(:total_entries)
  }
end
pagination_params() click to toggle source
# File lib/action_crud/pagination.rb, line 21
def pagination_params
  @pagination_params ||= params.permit(:page, :per_page).to_h.deep_symbolize_keys
end
set_pagination_params() click to toggle source
# File lib/action_crud/pagination.rb, line 25
def set_pagination_params
  pagination                   = pagination_params[:page].is_a?(Hash) ? pagination_params[:page] : {}
  pagination_params[:page]     = pagination[:number] || pagination_params.fetch(:page, 1)
  pagination_params[:per_page] = pagination[:size]   || pagination_params.fetch(:per_page, per_page)
end