Module: Trax::Controller::Collection::Pageable

Extended by:
ActiveSupport::Concern
Defined in:
lib/trax/controller/collection/pageable.rb

Constant Summary collapse

PAGINATION_META_METHODS =
[
  :current_page,
  :per_page,
  :size,
  :total_pages,
  :total_entries
].freeze

Instance Method Summary collapse

Instance Method Details

#collectionObject



26
27
28
# File 'lib/trax/controller/collection/pageable.rb', line 26

def collection
  @collection ||= super.paginate(pagination_params)
end

#collection_pagination_metaObject



30
31
32
33
34
35
# File 'lib/trax/controller/collection/pageable.rb', line 30

def collection_pagination_meta
  @collection_pagination_meta ||= ::Trax::Controller::Collection::Pageable::PAGINATION_META_METHODS.inject({}) do |h, key|
    h[key] = collection.try(key)
    h
  end
end

#collection_response_metaObject



37
38
39
40
41
42
43
# File 'lib/trax/controller/collection/pageable.rb', line 37

def collection_response_meta
  if collection_action?
    super.merge!(:pagination => collection_pagination_meta)
  else
    super
  end
end

#pagination_paramsObject



19
20
21
22
23
24
# File 'lib/trax/controller/collection/pageable.rb', line 19

def pagination_params
  params[:page] ||= self.class.collection_options.page
  params[:per_page] ||= self.class.collection_options.per_page

  @pagination_params ||= { :page => params[:page], :per_page => params[:per_page] }
end