Forum: Rails-ES WillPaginate Plugin

3ef1bab0819595be8895a351ca678d2b?d=identicon&s=25 Rogelio A. RogeX (rogelioamaya)
on 2012-03-16 23:57
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.
Eae327b24337b51bba273392172814f2?d=identicon&s=25 euclide martinez (euclide443)
on 2012-03-22 21:40
Hermano ve si esto te sirve yo lo tengo para Refrescar la memoria :) Si
empre hay que documentar las cosas para que no se olviden :)

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:


__________________________________________________________

<div id="buscador">
    <%= form_tag products_path, :method => 'get' do %>
      <p>
        <%= text_field_tag :search, params[:search] %>
        <%= submit_tag "Buscar", :name => nil %>
      </p>
    <% end %>

</div>

___________________________________________________________

Codigo de la Paginacion:


_____________________________________________________________

<p>
<div class="digg_pagination"  align="center" >
    <div clas="page_info">
      <%= page_entries_info @products %>
    </div>

<table align="center" >
   <tr>
      <td> <%= will_paginate @products, :container => false %> </td>
   </tr>
</table>

<p align="center"><%= link_to 'Nuevo Producto', new_product_path %></p>

</div>
<p/>


_________________________________________________________________


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 &#8594;
    page_entries_info:
      multi_page: Viendo %{model} %{from} - %{to} De %{count} in total
      multi_page_html: Viendo %{model} <b>%{from}&nbsp;-&nbsp;%{to}</b>
de un Total de <b>%{count}</b> Registros.
      single_page:
        one: Viendo 1 %{model}
        other: Displaying all %{count} %{model}
        zero: No %{model} found
      single_page_html:
        one: Viendo <b>1</b> %{model}
        other: Displaying <b>all&nbsp;%{count}</b> %{model}
        zero: No se encontraron  %{model}
    page_gap: ! '&hellip;'
    previous_label: ! '&#8592; Anterior'
This topic is locked and can not be replied to.