class RailsPaginate::Collection
method modules
Attributes
array_or_relation[R]
current_page[R]
pages[R]
per_page[R]
Public Class Methods
new(array_or_relation, page = nil, per_page = nil)
click to toggle source
initialize collection
# File lib/rails_paginate/collection.rb, line 7 def initialize(array_or_relation, page = nil, per_page = nil) # validate raise ArgumentError, "per_page is not valid" if not per_page.nil? and per_page <= 0 raise ArgumentError, "result is not an array or relation" unless array_or_relation.respond_to? :count # array_or_relation @array_or_relation = array_or_relation # save meta data @per_page = per_page || relation_per_page || RailsPaginate.per_page # load page with result load_page(page) unless page.nil? end
Public Instance Methods
first_page()
click to toggle source
first page
# File lib/rails_paginate/collection.rb, line 74 def first_page 1 end
first_page?()
click to toggle source
is current page the first page?
# File lib/rails_paginate/collection.rb, line 89 def first_page? current_page == first_page end
last_page()
click to toggle source
last page
# File lib/rails_paginate/collection.rb, line 79 def last_page pages end
last_page?()
click to toggle source
is current page the last page?
# File lib/rails_paginate/collection.rb, line 84 def last_page? current_page == last_page end
load_page(page)
click to toggle source
switch page
# File lib/rails_paginate/collection.rb, line 28 def load_page(page) # jump to correct page page = page.to_i if page.is_a? String page = first_page unless page.is_a? Fixnum page = first_page unless page > 0 page = last_page if page > pages # save page @current_page = page # load result load_result end
load_result()
click to toggle source
load result from input array_or_relation
to internal array
# File lib/rails_paginate/collection.rb, line 43 def load_result if array_or_relation.is_a? Array result = array_or_relation[offset..(offset + per_page - 1)] else result = array_or_relation.limit(per_page).offset(offset).all end self.replace result.nil? ? [] : result end
need_paginate?()
click to toggle source
need paginate
# File lib/rails_paginate/collection.rb, line 69 def need_paginate? total > per_page end
next_page()
click to toggle source
next page
# File lib/rails_paginate/collection.rb, line 94 def next_page current_page < pages ? (current_page + 1) : nil end
offset()
click to toggle source
get offset
# File lib/rails_paginate/collection.rb, line 64 def offset (current_page - 1) * per_page end
previous_page()
click to toggle source
previous page
# File lib/rails_paginate/collection.rb, line 99 def previous_page current_page > 1 ? (current_page - 1) : nil end
relation_per_page()
click to toggle source
check if the relation has a per_page
# File lib/rails_paginate/collection.rb, line 23 def relation_per_page (array_or_relation.respond_to?(:per_page) ? array_or_relation.per_page : nil) unless array_or_relation.is_a? Array end
total()
click to toggle source
total count of array or relation
# File lib/rails_paginate/collection.rb, line 54 def total @total ||= array_or_relation.count end