Class | ActionController::Pagination::Paginator |
In: |
vendor/rails/actionpack/lib/action_controller/pagination.rb
|
Parent: | Object |
A class representing a paginator for an Active Record collection.
controller | [R] | |
item_count | [R] | |
items_per_page | [R] |
Creates a new Paginator on the given controller for a set of items of size item_count and having items_per_page items per page. Raises ArgumentError if items_per_page is out of bounds (i.e., less than or equal to zero). The page CGI parameter for links defaults to "page" and can be overridden with page_parameter.
# File vendor/rails/actionpack/lib/action_controller/pagination.rb, line 192 192: def initialize(controller, item_count, items_per_page, current_page=1) 193: raise ArgumentError, 'must have at least one item per page' if 194: items_per_page <= 0 195: 196: @controller = controller 197: @item_count = item_count || 0 198: @items_per_page = items_per_page 199: 200: self.current_page = current_page 201: end
Sets the current page number of this paginator. If page is a Page object, its number attribute is used as the value; if the page does not belong to this Paginator, an ArgumentError is raised.
# File vendor/rails/actionpack/lib/action_controller/pagination.rb, line 207 207: def current_page=(page) 208: if page.is_a? Page 209: raise ArgumentError, 'Page/Paginator mismatch' unless 210: page.paginator == self 211: end 212: page = page.to_i 213: @current_page = has_page_number?(page) ? page : 1 214: end
Successively yields all the paginator’s pages to the given block.
# File vendor/rails/actionpack/lib/action_controller/pagination.rb, line 254 254: def each(&block) 255: page_count.times do |n| 256: yield self[n+1] 257: end 258: end
Returns true if this paginator contains the page of index number.
# File vendor/rails/actionpack/lib/action_controller/pagination.rb, line 242 242: def has_page_number?(number) 243: return false unless number.is_a? Fixnum 244: number >= 1 and number <= page_count 245: end