forked from jasder/forgeplus
29 lines
754 B
Ruby
29 lines
754 B
Ruby
module Base::PaginateHelper
|
|
extend ActiveSupport::Concern
|
|
|
|
def default_sort(sort_by, direction)
|
|
params[:sort_by] = params[:sort_by].presence || sort_by
|
|
params[:sort_direction] = params[:sort_direction].presence || direction
|
|
end
|
|
|
|
def offset
|
|
(page - 1) * per_page
|
|
end
|
|
|
|
def page
|
|
params[:page].to_i <= 0 ? 1 : params[:page].to_i
|
|
end
|
|
|
|
def per_page
|
|
params[:per_page].to_i <= 0 || params[:per_page].to_i > 100 ? 20 : params[:per_page].to_i
|
|
end
|
|
alias_method :limit, :per_page
|
|
|
|
def paginate(relations, total_count: nil)
|
|
if relations.is_a?(Array)
|
|
Kaminari.paginate_array(relations, limit: limit, offset: offset, total_count: total_count)
|
|
else
|
|
relations.page(page).per(per_page)
|
|
end
|
|
end
|
|
end |