2012-04-16 15 views
5

Also, wenn Sphinx verwendet werden Suchvorgänge auf 1000 Ergebnisse begrenzt. Wenn jedoch mehr als 1000 Ergebnisse vorhanden sind, berücksichtigen Paginierungslinks, die von will_paginate erzeugt werden, dies nicht und bieten Links zu Seiten jenseits von 1000/per_page. Ist das ein naheliegender Weg, eine Max Seiten oder etwas ähnliches einzustellen?Begrenzen Sie die Anzahl der Seiten in will_paginate

Prost.

Antwort

1

Ich fand die beste Lösung, dies zu tun war:

@results = Model.search(...) 
if @results.total_pages >= (1000/Model.per_page) 
    class << @results; def total_pages; 1000/Model.per_page; end end 
end 

Wo die 1000 vorzugsweise nicht :) fest einprogrammiert. Diese bekommt man das richtige Verhalten der will_paginate View Helfer kostenlos,

+0

haha, das ist witzig und löst meinen unmittelbaren Anwendungsfall. –

1
if params[:page].to_i * 30 <= 1000 
    @posts = Post.paginate(:page => params[:page], :per_page => 30) 
end 
12

Ich denke, es ist besser, den Parameter :total_entries zu Verfahren einreichen paginate:

@posts = Post.paginate(:page => params[:page], :per_page => 30, 
         :total_entries => 1000) 

will_paginate werden Links erzeugen nur für die Anzahl der Seiten erforderlich, um zeige 1000 Ergebnisse.

Sie können auch überprüfen, ob die angeforderte Seite auf das Intervall gehört:

if params[:page].to_i * 30 <= 1000 
    @posts = Post.paginate(:page => params[:page], :per_page => 30, 
         :total_entries => 1000) 
end 

Darüber hinaus wird durch den Parameter Absenden :total_entries, können Sie die SQL COUNT Abfrage vermeiden, die normalerweise will_paginate läuft die Gesamtzahl der Einträge abzurufen.

Verwandte Themen