Module: Pageable::ActionView::Base

Extended by:
ActiveSupport::Concern
Defined in:
lib/pageable/action_view/base.rb

Instance Method Summary collapse

Instance Method Details

#page_path(page, options = {}) ⇒ Object



6
7
8
9
# 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 = {}) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# 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