Module: JsonApiToolbox::Paginable
- Defined in:
- lib/json_api_toolbox/paginable.rb
Instance Method Summary collapse
- #collection_resource_path(options) ⇒ Object
- #create_page_link(link, page) ⇒ Object
- #page_links(paginations, entry) ⇒ Object
- #pagination(collection_resource) ⇒ Object
- #pagination_meta(collection_resource) ⇒ Object
Instance Method Details
#collection_resource_path(options) ⇒ Object
39 40 41 42 |
# File 'lib/json_api_toolbox/paginable.rb', line 39 def collection_resource_path() path_method = "#{controller_name.pluralize.underscore}_path" public_send(path_method, ) end |
#create_page_link(link, page) ⇒ Object
33 34 35 36 37 |
# File 'lib/json_api_toolbox/paginable.rb', line 33 def create_page_link(link, page) link_path = collection_resource_path(page: page, per_page: params[:per_page]) { link => link_path } end |
#page_links(paginations, entry) ⇒ Object
24 25 26 27 28 29 30 31 |
# File 'lib/json_api_toolbox/paginable.rb', line 24 def page_links(paginations, entry) link, page = entry if page paginations.merge(create_page_link(link, page)) else paginations end end |
#pagination(collection_resource) ⇒ Object
15 16 17 18 19 20 21 22 |
# File 'lib/json_api_toolbox/paginable.rb', line 15 def pagination(collection_resource) { first: 1, last: collection_resource.total_pages, prev: collection_resource.previous_page, next: collection_resource.next_page }.reduce({}, &method(:page_links)) end |
#pagination_meta(collection_resource) ⇒ Object
5 6 7 8 9 10 11 12 13 |
# File 'lib/json_api_toolbox/paginable.rb', line 5 def (collection_resource) { 'current-page': collection_resource.current_page, 'next-page': collection_resource.next_page, 'prev-page': collection_resource.previous_page, 'total-pages': collection_resource.total_pages, 'total-count': collection_resource.total_entries } end |