WillPaginate Plugin

Hola buen dia, alguien ha usado el plugin WillPaginate, me tope con el y
pues ahora ando jugandomela a semi-dios, inventando marafacas cosas, asi
que me surge una duda,

Este plugin solo sirve para paginar tablas en las vistas, siempre y
cuando este modelo exista en la base de datos ya que usa un finder para
traer los resultados, y trae todos pero solo muestra lo que se le asigne
vdd??

Por ejemplo:

objetoParaUsarEnElPlugin = Model.paginate()

y hasta ahi, yo necesito paginar una tabla de una vista pero para
hacerla hago varias consultas a otras tablas de la BD una vez que
obtengo la informacion debo manipularla y crear los resultados de las
tablas, entonces se me ocurrio crear un objeto, y a este asiganrle la
informacion obtenida que se mostrara en la tabla pero para usa el plugin
debo usar el paginate por lo que no puedo paginar mi objeto vdd??

Bueno ahorita me encuntro revisando la pagina oficial del plugin y pues
si alguien me puede sacar de estas dudas le estaria garadecido.

DE antemano Muchas Gracias.

Hermano ve si esto te sirve yo lo tengo para Refrescar la memoria :slight_smile: Si
empre hay que documentar las cosas para que no se olviden :slight_smile:

Instalacion

Para este ejemplo generamos un proyecto nuevo con el nombre Prueba
y creamos un scaffold con el nombre de products y dos campos nombre y
precio y hacemos la migracion.

1- Instalamos la gema.

Gemfile:

gem ‘will_paginate’

Nota: se utilizo la version 3.0.3

Consola:

bundle install

2- ahora buscamos el modelo Product y le pegamos la siguiente
Definicion:


def self.search(search, page)
paginate :per_page => 10, :page => page,
:conditions => [‘name like ?’, “%#{search}%”],
:order => ‘id’
end


3- ahora buscamos el controlador Products y modificamos la variable
@products = Product.all
de tal manera que quede de esta forma:


@products = Product.search(params[:search], params[:page])


4- Ahora modificaremos las vistas index para aguegar el formulario de
busqueda.
Copiaremos el siguiente codigo:

Codigo del Buscador:


<%= form_tag products_path, :method => 'get' do %>

<%= text_field_tag :search, params[:search] %> <%= submit_tag "Buscar", :name => nil %>

<% end %>

Codigo de la Paginacion:


<%= page_entries_info @products %>
<%= will_paginate @products, :container => false %>

<%= link_to 'Nuevo Producto', new_product_path %>


5- Ya tenemos las vistas ahora vamos a traducir la paginacion que trae
por defecto will_paginate
vamos a pegar el siguiente codigo el el archivi locale:


en:
will_paginate:
next_label: Siguiente →
page_entries_info:
multi_page: Viendo %{model} %{from} - %{to} De %{count} in total
multi_page_html: Viendo %{model} %{from} - %{to}
de un Total de %{count} Registros.
single_page:
one: Viendo 1 %{model}
other: Displaying all %{count} %{model}
zero: No %{model} found
single_page_html:
one: Viendo 1 %{model}
other: Displaying all %{count} %{model}
zero: No se encontraron %{model}
page_gap: ! ‘…’
previous_label: ! ‘← Anterior’