Ich benutze den Kaminari Edelstein, um eine API paginieren. Ich schaffe meine Sammlungen wie folgt aus:Wert erhalten in per (n) Methode mit Kaminari geschickt
def index
@my_models = MyModel.ordered_by_date
.page(params[:page])
.per(params[:count])
end
In der API, ich bin für die Kunden wie dies einige Paginierung Links setzen:
json.current_page my_models_url(
page: @my_models.current_page,
count: @my_models.size
)
if [email protected]_models.last_page?
json.next_page my_models_url(
page: @my_models.next_page,
count: @my_models.size
)
end
if [email protected]_models.first_page?
json.prev_page my_models_url(
page: @my_models.prev_page,
count: @my_models.size
)
end
Das Problem hierbei ist, dass auf der letzten Seite, @my_models.size
gibt nicht das korrekte Ergebnis für die Anzahl der Datensätze pro Seite zurück. Zum Beispiel, wenn ich Datensätze habe, und die Seitengröße ist 5
und ich gehe auf Seite 4
, dann ist der Zähler param in den URL-Seiten 2
, wo es 5
sein sollte.
Ich frage mich, ob es eine einfache Möglichkeit gibt, den Wert mit .per(n)
für eine Kaminari-Sammlung übergeben zu bekommen? Es wäre schön, das anstelle von diesem zu verwenden:
params[:count] || MyModel.default_per_page