rescue true

4 mayo, 2010

Will Paginate: Ir a la ultima página con elementos (out of bounds?)

En mis últimos proyectos uso el plugin (ahora gema) ‘will paginate‘ para la paginación de listados. Uno de los problemas que nos encontramos es cuando el listado tiene, por ejemplo, 4 paginas y el usuario intenta ir a la página 5. Esto ocurre normalmente cuando se borra el último elemento de una página.

El propio will_paginate nos ofrece una función para este tipo de casos y su aplicación es bastante trivial.

per_page = 10
@noticias = @noticias.paginate :page => params[:page], :per_page => per_page
@noticias = @noticias.paginate :page => @noticias.page_count, :per_page => per_page if @noticias.out_of_bounds? and @noticias.total_entries > 0

La idea es bastante sencilla. Paginamos por primera vez normal, y, en caso de que la página que nos devuelve el paginate este fuera de los limites (out_of_bounds ) y exista algun elemento (total_entries > 0) volvemos a paginar usando como parametro de página la ultima página con entradas (page_count).

Espero que haya quedado claro! Un saludo.

Tema Rubric. Blog de WordPress.com.

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.