Sha256: 063860d30d790af4c0355cbb6f6f551f7612317e6b44153bec9271b927a72528

Contents?: true

Size: 816 Bytes

Versions: 1

Compression:

Stored size: 816 Bytes

Contents

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

module GearedPagination
  module Controller
    extend ActiveSupport::Concern

    included do
      after_action :set_paginated_headers
    end

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

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

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

      def current_page_param
        params[:page].to_i > 0 ? params[:page].to_i : 1
      end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
geared_pagination-0.1 lib/geared_pagination/controller.rb