2010-06-22 10 views
9

Estoy tratando de limitar el número de elementos devueltos con mislav's will paginate con Rails 3. Actualmente estoy usando:paginará Rails 3 por Página

# 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 

Esto hace paginación, pero no 8 artículos por página. Si modifico el código para no usar el "dónde" funciona bien. Sin embargo, agregar "dónde" o "ámbito" parece causar problemas. ¿Alguna idea de lo que estoy haciendo mal?

Gracias.

Respuesta

14

Terminó siendo forzado a mover el límite por página a la consulta. Parece ser un error con la versión de Rails 3. Por lo tanto, se fija utilizando:

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

Esto fue un error. ¡Ahora arreglado! Usa la gema 'will_paginate', '~> 3.0.pre4' – mislav

+0

@mislav ¡Gracias! ¡Aprecia todo tu trabajo en la gema! –

0

¿Por qué está utilizando 'Empresas' y no 'Empresa'. Esto podría ser un error tipográfico aquí, pero parece ser un problema.

+0

Sí, un error tipográfico. Solucionado ahora –

4

@Kevin, si quiere estar seguro de que la página es coherente entre varias consultas, puede utilizar Company.per_page, por ejemplo.

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

También puede darle una oportunidad a Kaminari joya que es mucho mejor integrada con los carriles 3: http://railscasts.com/episodes/254-pagination-with-kaminari

class Company < ActiveRecord::Base 
    paginates_per 7 
end 

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