class PaginateResponder::Base
Attributes
resource[R]
responder[R]
Public Class Methods
new(responder)
click to toggle source
# File lib/paginate-responder/base.rb, line 5 def initialize(responder) @responder = responder @resource = responder.resource end
Private Class Methods
suitable?(resource)
click to toggle source
# File lib/paginate-responder/base.rb, line 127 def suitable?(resource) false end
Public Instance Methods
controller()
click to toggle source
# File lib/paginate-responder/base.rb, line 14 def controller responder.controller end
paginate!()
click to toggle source
# File lib/paginate-responder/base.rb, line 22 def paginate! @resource = paginate update @resource end
request()
click to toggle source
# File lib/paginate-responder/base.rb, line 10 def request responder.request end
response()
click to toggle source
# File lib/paginate-responder/base.rb, line 18 def response controller.response end
Protected Instance Methods
cast_page(page)
click to toggle source
# File lib/paginate-responder/base.rb, line 57 def cast_page(page) Integer(page) rescue ArgumentError 1 end
default_max_per_page()
click to toggle source
# File lib/paginate-responder/base.rb, line 108 def default_max_per_page 100 end
default_per_page()
click to toggle source
# File lib/paginate-responder/base.rb, line 104 def default_per_page 50 end
first_page()
click to toggle source
# File lib/paginate-responder/base.rb, line 80 def first_page 1 end
last_page()
click to toggle source
# File lib/paginate-responder/base.rb, line 92 def last_page total_pages end
max_per_page()
click to toggle source
# File lib/paginate-responder/base.rb, line 72 def max_per_page @max_per_page ||= begin val ||= controller.max_per_page if controller.respond_to? :max_per_page val ||= default_max_per_page val end end
next_page()
click to toggle source
# File lib/paginate-responder/base.rb, line 88 def next_page page + 1 if total_pages && page < total_pages end
page()
click to toggle source
# File lib/paginate-responder/base.rb, line 48 def page @page ||= begin val ||= controller.page if controller.respond_to? :page val ||= controller.params[:page] val ||= first_page cast_page val end end
paginate()
click to toggle source
# File lib/paginate-responder/base.rb, line 32 def paginate resource end
per_page()
click to toggle source
# File lib/paginate-responder/base.rb, line 63 def per_page @per_page ||= begin val ||= controller.per_page if controller.respond_to? :per_page val ||= controller.params[:per_page].try(:to_i) val ||= default_per_page val < 1 ? 1 : (val > max_per_page) ? max_per_page : val end end
prev_page()
click to toggle source
# File lib/paginate-responder/base.rb, line 84 def prev_page page - 1 if page > 1 end
total_count()
click to toggle source
# File lib/paginate-responder/base.rb, line 100 def total_count nil end
total_pages()
click to toggle source
# File lib/paginate-responder/base.rb, line 96 def total_pages nil end
update()
click to toggle source
# File lib/paginate-responder/base.rb, line 36 def update link! 'first', page: first_page if first_page link! 'prev', page: prev_page if prev_page link! 'next', page: next_page if next_page link! 'last', page: last_page if last_page response.headers["X-Total-Pages"] = total_pages.to_s if total_pages response.headers["X-Total-Count"] = total_count.to_s if total_count response.headers["X-Per-Page"] = per_page.to_s if per_page response.headers["X-Current-Page"] = page.to_s if page end
Private Instance Methods
link!(rel, params)
click to toggle source
# File lib/paginate-responder/base.rb, line 114 def link!(rel, params) if request.params.key?(:per_page) params = {per_page: per_page}.merge(params) end params = request.params.merge(params) url = controller.url_for(params) response.link(url, rel: rel) end