class RsPaginator::Paginator

Public Class Methods

new(objects, context, extra_params: {}) click to toggle source
# File lib/rs_paginator/paginator.rb, line 10
def initialize(objects, context, extra_params: {})
  @objects = objects
  @context = context
  @total_pages = objects.total_pages
  @current_page = objects.page
  @extra_params = extra_params
end

Public Instance Methods

render() click to toggle source
# File lib/rs_paginator/paginator.rb, line 18
def render
  content_tag(:ul, class: %w[pagination pagination-sm]) do
    prev_link + page_links + next_link
  end
end

Private Instance Methods

gap() click to toggle source
# File lib/rs_paginator/paginator.rb, line 58
def gap
  content_tag(:li, @context.link_to(raw('⋯'), '#'), class: 'disabled')
end
params(h = {}) click to toggle source
# File lib/rs_paginator/paginator.rb, line 26
def params(h = {})
  @context.params.merge(@extra_params).merge(h)
end
visible_pages() click to toggle source
# File lib/rs_paginator/paginator.rb, line 62
def visible_pages
  if @total_pages <= 11
    1..@total_pages
  elsif @current_page <= 6
    (1..8).to_a + [nil, @total_pages-1, @total_pages]
  elsif @current_page > @total_pages - 6
    [1, 2, nil] + ((@total_pages - 8)..@total_pages).to_a
  else
    [1, 2, nil] + ((@current_page - 2)..(@current_page + 2)).to_a + [nil, @total_pages-1, @total_pages]
  end
end