https://github.com/sshaw/page_number
Page number validation. Utility methods for pagination page and per page that make sure you'll always have a valid number
https://github.com/sshaw/page_number
kaminari pagination ruby sql-injection validation will-paginate willpaginate
Last synced: about 1 month ago
JSON representation
Page number validation. Utility methods for pagination page and per page that make sure you'll always have a valid number
- Host: GitHub
- URL: https://github.com/sshaw/page_number
- Owner: sshaw
- Created: 2017-03-18T02:56:06.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2025-06-21T03:00:47.000Z (4 months ago)
- Last Synced: 2025-09-05T09:21:19.217Z (about 1 month ago)
- Topics: kaminari, pagination, ruby, sql-injection, validation, will-paginate, willpaginate
- Language: Ruby
- Homepage:
- Size: 16.6 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: Changes
Awesome Lists containing this project
README
# PageNumber
[](https://github.com/sshaw/page_number/actions/workflows/ci.yml)
Utility methods for pagination page and per page that make sure you'll
always have a valid number.Use them your controllers (recommended) or model or anywhere where you process page
info.## Usage
`PageNumber` provides 3 methods:
* `page(n)`/`__page__(n)` (defaults to `1`)
* `page!(n)`/`__page__!(n)` (raises `PageNumber::PageInvalid` instead of returning default)
* `per_page(n)`/`__per_page__(n)` (defaults to `10`)To use, `include` or `extend` the `PageNumber` module:
```rb
require "page_number"class BaseController
include PageNumber
endclass SubController < BaseController
def index
User.all(:page => page(params[:page]), :per_page => per_page(params[:per_page]))
end
end```
To have better control over how `page` and `per_page` work you can
define one or more of the following methods:```rb
class BaseController
include PageNumber# These are all optional
protecteddef page_sizes
[ 25, 50, 100 ]
enddef default_per_page
20
enddef default_page
2
enddef max_page_number
# who knows!?
end
```### will_paginate & ActiveRecord Subclasses
If you use `PageNumber` in a class context in model that uses will_paginate _and you subclasses_ that model you may receive the following error:
```
ArgumentError: wrong number of arguments (given 0, expected 1)
from /Users/sshaw/code/ruby/page_number/lib/page_number.rb:53:in `per_page'
from /Users/sshaw/.rvm/gems/ruby-2.3.7/gems/will_paginate-3.1.6/lib/will_paginate/per_page.rb:18:in `inherited'
...
```This is because will_paginate is expecting its `per_page` method.
One way to avoid this:
```rb
class YourModel < ApplicationRecord
Pager = Class.new { extend PageNumber }
end
```
Now instead of calling `PageNumber`'s `per_page` as is you call via the `Pager` class: `Pager.per_page`## Author
Skye Shaw [skye.shaw AT gmail.com]
## License
Released under the MIT License: http://www.opensource.org/licenses/MIT