Sha256: 066490ae54efc396b1a9c2c3bd9aaf6eba34e72f744bb3d4fe9d9afb82ce86df

Contents?: true

Size: 955 Bytes

Versions: 7

Compression:

Stored size: 955 Bytes

Contents

require 'geared_pagination/recordset'
require 'geared_pagination/headers'

module GearedPagination
  module Controller
    extend ActiveSupport::Concern

    included do
      after_action :set_paginated_headers
      etag { @page if geared_page? }
    end

    private
      def set_page_and_extract_portion_from(records, ordered_by: nil, per_page: nil)
        @page = current_page_from(records, ordered_by: ordered_by, per_page: per_page)
        @page.records
      end

      def current_page_from(records, ordered_by: nil, per_page: nil)
        GearedPagination::Recordset.new(records, ordered_by: ordered_by, per_page: per_page).page(current_page_param)
      end

      def set_paginated_headers
        GearedPagination::Headers.new(page: @page, controller: self).apply if geared_page?
      end

      def geared_page?
        @page.is_a? GearedPagination::Page
      end

      def current_page_param
        params[:page]
      end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
geared_pagination-1.2.0 lib/geared_pagination/controller.rb
geared_pagination-1.1.2 lib/geared_pagination/controller.rb
geared_pagination-1.1.1 lib/geared_pagination/controller.rb
geared_pagination-1.1.0 lib/geared_pagination/controller.rb
geared_pagination-1.0.2 lib/geared_pagination/controller.rb
geared_pagination-1.0.1 lib/geared_pagination/controller.rb
geared_pagination-1.0.0 lib/geared_pagination/controller.rb