Una exelente alternativa para implementar paginacion en rails es Kaminari. ofrece mas opciones que la otra que conocemos, will_paginate.
Ruby 1.8.7, 1.9.2, 1.9.3, 2.0.0, 2.1.1
Rails 3.0, 3.1, 3.2, 4.0, 4.1
Haml 3+
Vamos a incorporarla en nuestro book_town, en general, kaminari es:
1. en primer lugar agregamos la gema a nuestro gemfile gem 'kaminari' hacemos bundle install
2. Kaminari nos crea un scope, llamado 'page', este scope puede usarse en cualquier modelo activerecord, en nuestro caso, se agrega a la accion index del booksController para que nos muestre la paginacion de libros
3. en la vista index Colocamos el helper que crea kaminari que se llama paginate y le 'pasamos' lo que queremos que pagine en este caso @books
Podemos definir cuantos items o libros queremos que se muestren por pagina, agregando per(#) al final de nuestra query o lo que sea User.page(params[:page]).per(50)
Hay muchas maneras de configurar nuestra paginacion, ejemplo la que vimos del .per(#) Tambien podemos generar el archivo de configuracion de kaminari con rails g kaminari:config despues de haberlo generado nos ubicamos en la carpeta config/initalizers/kaminari_config.rb y ahi modificar las variables Kaminari trae una configuracion por defecto.
el per_page tambien lo podemos modificar para cada modelo ejemplo: nos ubicamos en el modelo y definimos paginates_per 50 o el max_paginates_per 30 tambien se puede agregar por cada modelo que querramos paginar tambien podemos hacerlo en el controlador, como vimos al principio (duh)
helper method ejemplo: = paginate @users, :param_name => :pagina = paginate @users, :window => 2
personalizar la vista por medio del en.yml
en: views: pagination: first: "« First" last: "Last »" previous: "‹ Prev" next: "Next ›" truncate: "…" helpers: page_entries_info: one_page: display_entries: zero: "No %{entry_name} found" one: "Displaying 1 %{entry_name}" other: "Displaying all %{count} %{entry_name}" more_pages: display_entries: "Displaying %{entry_name} %{first} - %{last} of %{total} in total"
tambien se puede customizar rails g kaminari:views default rails g kaminari:views default -e haml