Sha256: 7437ae1934461e79501f3b9dc2e9e36266d6d8b3fe08aaadf5e22e9892223213

Contents?: true

Size: 1.34 KB

Versions: 19

Compression:

Stored size: 1.34 KB

Contents

module Spina
  module Api
    module Paginable
      extend ActiveSupport::Concern
    
      private
      
        def pagination(records)
          paginated_records = records.page(params[:page]).per(params[:per_page])
          [paginated_records, {
            meta: pagination_meta(paginated_records),
            links: pagination_links(paginated_records)
          }]
        end
        
        def pagination_meta(paginated_records)
          {
            current_page: paginated_records.current_page,
            total: paginated_records.total_count,
            per_page: paginated_records.limit_value,
            path: view_context.url_for(only_path: true)
          }
        end
        
        def pagination_links(paginated_records)
          {
            first: path_to_first_page,
            prev: view_context.path_to_prev_page(paginated_records),
            next: view_context.path_to_next_page(paginated_records),
            last: path_to_last_page(paginated_records)
          }
        end
        
        def path_to_first_page
          view_context.url_for(page: 1, per_page: params[:per_page], only_path: true)
        end
        
        def path_to_last_page(paginated_records)
          view_context.url_for(page: paginated_records.total_pages, per_page: params[:per_page], only_path: true)
        end
          
    end
  end
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
spina-2.12.0 app/controllers/concerns/spina/api/paginable.rb
spina-2.11.0 app/controllers/concerns/spina/api/paginable.rb
spina-2.10.0 app/controllers/concerns/spina/api/paginable.rb
spina-2.9.1 app/controllers/concerns/spina/api/paginable.rb
spina-2.9.0 app/controllers/concerns/spina/api/paginable.rb
spina-2.8.1 app/controllers/concerns/spina/api/paginable.rb
spina-2.8.0 app/controllers/concerns/spina/api/paginable.rb
spina-2.7.0 app/controllers/concerns/spina/api/paginable.rb
spina-2.6.2 app/controllers/concerns/spina/api/paginable.rb
spina-2.6.1 app/controllers/concerns/spina/api/paginable.rb
spina-2.6.0 app/controllers/concerns/spina/api/paginable.rb
spina-2.5.0 app/controllers/concerns/spina/api/paginable.rb
spina-2.4.0 app/controllers/concerns/spina/api/paginable.rb
spina-2.3.5 app/controllers/concerns/spina/api/paginable.rb
spina-2.3.4 app/controllers/concerns/spina/api/paginable.rb
spina-2.3.3 app/controllers/concerns/spina/api/paginable.rb
spina-2.3.2 app/controllers/concerns/spina/api/paginable.rb
spina-2.3.1 app/controllers/concerns/spina/api/paginable.rb
spina-2.3.0 app/controllers/concerns/spina/api/paginable.rb