Module: JsonApiToolbox::Paginable

Defined in:
lib/json_api_toolbox/paginable.rb

Instance Method Summary collapse

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(options)
  path_method = "#{controller_name.pluralize.underscore}_path"
  public_send(path_method, options)
end


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


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 pagination_meta(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