Jbuilder Pagination Plus
Jbuilder extension that makes easier to use pagination according to the JSON API conventions.
Forked from: https://github.com/bacarini/jbuilder_pagination
Requirement
JbuilderPaginationPlus
relies on a paginated collection with the methods current_page
, total_pages
, and size
, such as are supported by both Kaminari or WillPaginate.
Installation
Add this line to your application’s Gemfile:
ruby
gem 'jbuilder_pagination_plus', require: 'jbuilder/pagination'
And then execute:
$ bundle
Or install it yourself as:
$ gem install jbuilder_pagination_plus
Usage
Controller Module
Import the Pagination
module in your controller
```ruby class ApplicationController < ActionController::API include Pagination end
```
Kaminari examples
```ruby #array @posts = paginate Kaminari.paginate_array([1, 2, 3])
active_record
@posts = paginate Post ```
WillPaginate examples
```ruby #array @posts = [1,2,3].paginate(page: 3, per_page: 1)
active_record
@posts = Post.page(3).per_page(1) ```
And then in your *.json.jbuilder
```ruby json.links do json.pages! @posts, url: “http://example.com/posts”, query_parameters: { additional: ‘parameters’ } end json.data do # Whatever your data is end
{
# “links”: {
# “self”: “http://example.com/posts?page[number]=3&page[size]=1&additional=parameters”,
# “first”: “http://example.com/posts?page[number]=1&page[size]=1&additional=parameters”,
# “prev”: “http://example.com/posts?page[number]=2&page[size]=1&additional=parameters”,
# “next”: “http://example.com/posts?page[number]=4&page[size]=1&additional=parameters”,
# “last”: “http://example.com/posts?page[number]=13&page[size]=1&additional=parameters”
# },
# “data”: {
# …
# }
# }
```
The options url
and query_parameters
are opcionals.
In case there is no pagination at all, links
will be omitted.
Development
After checking out the repo, run bin/setup
to install dependencies. Then, run bin/console
for an interactive prompt that will allow you to experiment.
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request