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

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