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