:offset
:offset is a generic OFFSET paginator usable with ORM collections or regular Array objects.
It uses the complete OFFSET pagination technique, which triggers two SQL queries per request:
- a
COUNTquery to get the count - an
OFFSET+LIMITquery to get the records
It fully supports all the helpers and navigators.
Consider using the :countish paginator when possible!
The :countish paginator offers identical UI features, but it's up to 2x faster.
Controller
@pagy, @records = pagy(:offset, collection, **options)
@pagyis the pagination instance. It provides thereaders and the helpers to use in your code.@recordsrepresents the paginated collection of records for the page (lazy-loaded records).
count_over: true- Use this option with
GROUP BYcollections to calculate the total number of results usingCOUNT(*) OVER (). raise_range_error: true- Enable the
Pagy::RangeError(which is otherwise rescued to an empty page by default). limit: 10- Specifies the number of items per page (default:
20) client_max_limit: 1_000Set the maximum
:limitthat the client is allowed torequest. Higher requested:limits are silently capped.IMPORTANT If falsey, the client cannot request any
:limit.page: force_page- Set it only to force the current
:page. (It is set automatically from the request param). request: request || hashPagy tries to find the
Rake::Requestatself.request. Set it only when it's not directly available in your code (e.g., Hanami, standalone app, test,...). For example:hash_request = { base_url: 'http://www.example.com', path: '/path', params: { 'param1' => 1234 }, # The string-keyed params hash from the request cookie: 'xyz' } # The 'pagy' cookie, only for keynavjsonapi: true- Enables JSON:API-compliant URLs with nested query string (e.g.,
?page[number]=2&page[size]=100). root_key: 'my_root'- Set it to enable nested URLs with nested query string
?my_root[page]=2&my_root[limit]=100)). Use it to handle multiple pagination objects in the same request. page_key: 'my_page'- Set it to change the key string used for the
:pagein URLs (default'page'). limit_key: 'my_limit'- Set it to change the key string used for the
:limitin URLs (default'limit').
offset- The OFFSET used in the SQL query
count- The collection count
from- The position in the collection of the first item on the page. (Different Pagy classes may use different value types for it).
to- The position in the collection of the last item on the page. (Different Pagy classes may use different value types for it).
last- The last page.
pages- The number of pages.
previous- The previous page
next- The next page
page- The current page
limit- The items per page
in- The actual items in the page
records- The fetched records for the current page.
optionsThe hash of options of the object