masoto
February 24, 2008, 9:24pm
1
Hola a todos,
estoy utilizando el plugin will_paginate:
@articles = Article.paginate(:all, :per_page => 10, :page =>
params[:page])
Pero sólo quiero recoger los 20 primeros artúculos:
@articles = Article.paginate(:all, :limit => 20, :per_page => 10, :page
=> params[:page])
Pero no funciona, ¿Alguien sabe porque?
Gracias de nuevo.
masoto
February 24, 2008, 10:07pm
2
hola,
Pero sólo quiero recoger los 20 primeros artúculos:
@articles = Article.paginate(:all, :limit => 20, :per_page => 10, :page
=> params[:page])
Pero no funciona, ¿Alguien sabe porque?
básicamente will_paginate lo que hace es lanzar un find al que le pone
los parámetros :limit y :offset, por lo que si tú le pasas el parámetro
:limit, él lo sobreescribe con lo que tengas en el parámetro :per_page
Si en tu caso necesitas paginar de 10 en 10 sobre los primeros 20
registros, podrÃas lanzar la query de los 20 registros con un find
normal, y después paginar sobre ese resultado usando
WillPaginate::Collection.create
Si estuviésemos hablando de muchos registros sobre los que paginar, no
es la mejor solución del mundo porque para crear la collection tiene que
cargar primero todos los registros y luego paginar en memoria sobre
ellos (mientras que con el limit/offset se cargan de la base de datos
solamente los registros necesarios), pero para 20 filas no parece mala
idea.
saludos,
javier ramÃrez
masoto
April 25, 2008, 3:10pm
3
El dom, 24-02-2008 a las 21:24 +0100, Mario S. escribió:
Hola a todos,
@articles = Article.paginate(:all, :per_page => 10, :page =>
params[:page])
pues según la documentación de will_paginate el plugin funciona bien.
Tu le estás pasando un parámetro, :per_page, y le dices que quieres 10
resultados (los que will_paginate retira de la páinga). Si
cambias :per_page => 10 a :per_page => 20 tendrás 20 resultados:

@articles = Article.paginate(:all, :per_page => 20, :page =>
params[:page])
Un Saludo.
Guillermo [email protected]