:meilisearch
:meilisearch is a SEARCH paginator designed for Meilisearch results.
Pagy searches and paginates
You use the pagy_search method in place of the ms_search method.
Model
extend Pagy::Search
ActiveRecord_Relation.include Pagy::Search # Statically enable pagy_search on the model relations
Controller
# Get the collection in one of the following ways
search = Article.pagy_search(params[:q])
search = Article.pagy_search(params[:q]).results
# Paginate it
@pagy, @response = pagy(:meilisearch, search, **options)
You search and paginate
Pagy creates its object out of your result.
Controller
# Standard results (already paginated)
@results = Model.ms_search(nil, hits_per_page: 10, page: 10, **options)
# Get the pagy object out of it
@pagy = pagy(:meilisearch, @results, **options)
Search paginators don't query a DB, but use the same positional technique as :offset paginators, with shared options and readers.
search_method: :my_search- Allows customization of the
meilisearchmethod to use (default::ms_search). 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