2016-06-27 18 views
0

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 

Antwort

0

Nur diese eine out. Die Methode, die ich suchte, war limit_value

MyModel.all.page(4).per(5).limit_value #=> 5