You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
21 lines
564 B
21 lines
564 B
|
1 week ago
|
class Paginator
|
||
|
|
attr_reader :page, :per_page
|
||
|
|
|
||
|
|
def initialize(params, per_page, custom_name = 'p')
|
||
|
|
@current_page = params[custom_name].nil? || params[custom_name].to_i < 1 ? 1 : params[custom_name].to_i
|
||
|
|
@per_page = per_page
|
||
|
|
end
|
||
|
|
|
||
|
|
def get_page(items)
|
||
|
|
start_index = (@current_page - 1) * @per_page
|
||
|
|
items[start_index, @per_page]
|
||
|
|
end
|
||
|
|
|
||
|
|
def pages_info(items)
|
||
|
|
total_pages = (items.length / @per_page.to_f).ceil
|
||
|
|
(1..total_pages).map do |page_number|
|
||
|
|
{ page: page_number, is_current: page_number == @current_page }
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|