Gem Version Code Climate Build Status Dependency Status

Pagers

Scope based pagination engine for rails.

Why

I did this gem to:

  • Simplify code by keep close integration with rails.
  • Have most common used settings set out of the box.
  • Create a compatible pagination for indexers gem.

Install

Put this line in your Gemfile:

gem 'pagers'

Then bundle:

$ bundle

Configuration

Generate the configuration file:

$ bundler exec rails g pagers:install

Set the global settings:

Pagers.configure do |config|

  config.length = 20
  config.padding = 0
  config.links = 5

end

Usage

Relation

Call the page scope from your models:

@products = Product.page(1)

You can override global options by passing a hash:

@products = Product.page(1, length: 10, padding: 4)

Views

You can use paginate helper to generate a pager html:

<%= paginate @collection %>

SEO

If you want to remove the page query parameter, add an optional parameter to the route:

get 'search/:query/(:page)' => 'products#search'

That will produce links like this:

search/sample
search/sample/2
search/sample/3

Contributing

Any issue, pull request, comment of any kind is more than welcome!

I will mainly ensure compatibility to PostgreSQL, AWS, Redis, Elasticsearch, FreeBSD and Memcached. 

Credits

This gem is maintained and funded by mmontossi.

License

It is free software, and may be redistributed under the terms specified in the MIT-LICENSE file.