2010-06-22 7 views
9

Ich versuche, die Anzahl der Elemente mit mislav's will paginate mit Rails 3. Ich bin derzeit wieder zu begrenzen, mit:Wird Paginate Rails 3 pro Seite

# Gemfile 
gem 'will_paginate', :git => 'git://github.com/mislav/will_paginate.git', :branch => 'rails3' 

# company.rb 
class Company < ActiveRecord::Base 
    self.per_page = 8 
end 

# company_controller.rb 
def index 
    @companies = Company.where(...).paginate(:page => params[:page]) 
end 

Dies tut Paginierung, aber nicht 8 Artikel pro Seite. Wenn ich den Code ändere, um das "wo" nicht zu verwenden, funktioniert es gut. Das Hinzufügen von "Where" oder "Scoped" scheint jedoch Probleme zu verursachen. Irgendwelche Ideen, was ich falsch mache?

Danke.

Antwort

14

Am Ende wurde gezwungen, das Limit pro Seite in die Abfrage zu verschieben. Scheint ein Bug mit der Rails 3 Version zu sein. Also, behoben mit:

@companies = Company.where(...).paginate(:page => params[:page], :per_page => 8) 
+0

Das war ein Fehler. Jetzt repariert! Verwende den Edelstein 'will_paginate', '~> 3.0.pre4' – mislav

+0

@mislav Danke! Schätze all deine Arbeit an dem Juwel! –

0

Warum verwenden Sie "Firmen" und nicht "Firma". Dies könnte nur ein Tippfehler sein, aber es scheint ein Problem zu sein.

+0

Ja, ein Tippfehler. Es wurde jetzt behoben. –

4

@Kevin, wenn Sie sicher sein wollen, dass per_page über verschiedene Abfragen hinweg konsistent ist, können Sie Company.per_page verwenden, z.

@companies = Company.where(...).paginate(:page => params[:page], :per_page => Company.per_page) 

Sie auch einen Versuch zu Kaminari Juwel geben kann, die mit Schienen viel besser integriert sind 3: http://railscasts.com/episodes/254-pagination-with-kaminari

class Company < ActiveRecord::Base 
    paginates_per 7 
end 

@companies = Company.where(...).page(params[:page])