module Pageable::ActionView::Base

Public Instance Methods

page_path(page, options = {}) click to toggle source
# File lib/pageable/action_view/base.rb, line 6
def page_path(page, options = {})
  parameter = options[:parameter] || Rails.application.config.pagination.default_parameter
  request.path + '?' + request.query_parameters.merge(parameter => page).to_query
end
pager(relation, options = {}) click to toggle source
# File lib/pageable/action_view/base.rb, line 11
def pager(relation, options = {})
  navigation = options[:navigation] || Rails.application.config.pagination.default_navigation
  if relation.total_pages >= navigation
    middle = (navigation / 2).ceil
    if relation.current_page > relation.total_pages - middle
      starts_at = relation.total_pages - navigation + 1
      ends_at = relation.total_pages
    elsif relation.current_page <= middle
      starts_at = 1
      ends_at = navigation
    else
      starts_at = relation.current_page - middle
      ends_at = relation.current_page + middle
    end
  else
    starts_at = 1
    ends_at = relation.total_pages
  end
  render partial: 'pageable/pager', locals: {
    relation: relation,
    options: options,
    pages: Range.new(starts_at, ends_at),
    less_pages: starts_at > 1,
    more_pages: ends_at < relation.total_pages
  }
end