Paginación en Rails con la gema will_paginate

El mundo gira cada vez más rápido y esta aceleración es evidente en todas las facetas de nuestras vidas. Especialmente cuando se trata de negocios, la prima está en la velocidad. En esta frenética aceleración, la volatilidad es la única constante y la gente tiene una gran afinidad por las cosas que pueden ahorrar tiempo. La popularidad de Ruby on Rails se debe al hecho de que lo que otros lenguajes de programación podrían tardar meses y años en completar, se puede construir en semanas y días con Ruby on Rails. Entonces, ¿cómo logra Ruby on Rails crear aplicaciones en tan poco tiempo? Entre otras cosas, las gemas de Ruby son uno de los factores más importantes que contribuyen a que Ruby on Rails reduzca los gastos generales de desarrollo. Estas gemas son una lista de códigos reutilizables categorizados que ayudan a los desarrolladores a crear aplicaciones a un ritmo más rápido. Una de las gemas más importantes entre una horda de gemas es la gema de paginación. La paginación, que es un aspecto realmente importante de cualquier aplicación web, ayuda a dividir documentos en páginas discretas. En Ruby on Rails podemos paginar datos fácilmente usando una gema llamada 'will_paginate'. La biblioteca will_paginate hace que agregar funcionalidad de paginación a las aplicaciones Rails (y otros marcos Ruby) sea sencillo. will_paginate es un complemento muy bien diseñado. Además de la integración de objetos ActiveRecord, puede integrarse con matrices y cualquier colección.

Pasos para la integración de will_paginate con Rails :

Paso 1 : Añade “gem will_paginate” en tu Gemfile

Archivo de gemas:

gema 'will_paginate', '~> 3.0'

Paso 2 : Instalación del paquete

Realice una “instalación de paquete” de su proyecto Rails

Instalación del paquete:

Este comando debe ejecutarse en el directorio de la aplicación Rails, que instalará la gema 'will_paginate' en el entorno Ruby si aún no está instalada. Si esta gema ya está disponible en su entorno, entonces simplemente usará la aplicación Rails de la gema.

Paso 3 : Integración básica

Agregue el parámetro de paginación al modelo que se consulta para el conjunto de resultados paginados. Ahora, agreguemos paginación a nuestra aplicación. Abra su controlador nuevamente y modifíquelo para que se parezca al siguiente código.

código de controlador :

aplicación/controladores/articles_controller.rb:

clase ArtículosController <AplicaciónController

índice de definición

@artículos = Blog.paginate(:página => parámetros[:página], :per_página => 10)

fin

fin

Agregaría los parámetros requeridos en la siguiente colección de registros para mostrar enlaces de paginación en el front-end (.erb). Parámetros que se agregan:

  • página_actual: es el número de página actual para el conjunto de datos de resultados paginados
  • total_entries: número de registros en la base de datos que satisface los criterios dados
  • límite: límite por página para los datos de resultados paginados
  • offset – conjunto de datos paginados actual -> para mostrar la página actual

Parámetros :

  • :página: este es el parámetro enviado en la cadena de consulta. En base a esto, se decide qué registros se van a recuperar.
  • :per_page: este es el número de resultados que desea obtener por página

Ver código :

aplicación/views/articles/index.html.erb

<div class="”row" margin-twenty5-zero margin-b-zero pagination-row”>

<div class="”col-lg-8" col-md-8 col-sm-7 col-xs-6 padding-zero”>

  • <%= will_paginate(@articles,:previous_label => “«”, :next_label => “»”,:class=>”small-font”,:outer_window => 1,:inner_window => 0) %>

</div>

<div class="”col-lg-4" col-md-4 col-sm-5 col-xs-6 pagination-info”>

<span class="”pull-right”"><%= page_entries_info(@articles) %></span>

</div>

</div>

Ayudantes de vista estándar :

Devuelve HTML que representa enlaces de páginas para un objeto tipo WillPaginate::Collection. En caso de que no haya más de una página en total, se devuelve cero.

  • :clase: nombre de clase CSS para el DIV generado (predeterminado: “paginación”)
  • :etiqueta_anterior – predeterminado: “« Anterior”
  • :next_label – predeterminado: “Siguiente »”
  • :page_links: cuando es falso, solo se representan los enlaces anteriores/siguientes (predeterminado: verdadero)
  • :inner_window: cuántos enlaces se muestran alrededor de la página actual (predeterminado: 4)
  • :outer_window: cuántos enlaces hay alrededor de la primera y la última página (predeterminado: 1)
  • :link_separator – separador de cadena para elementos HTML de página (predeterminado: espacio simple)
  • :param_name: nombre del parámetro para el número de página en las URL (predeterminado: :página)
  • :params – parámetros adicionales al generar enlaces de paginación (por ejemplo, :controller => “foo”, :action => nil)
  • :renderer – nombre de clase, clase o instancia de un renderizador de enlace (predeterminado en Rails: WillPaginate::ActionView::LinkRenderer)
  • :contenedor: alterna la representación del contenedor DIV para enlaces de paginación, se establece en falso solo cuando representa su propio marcado de paginación (predeterminado: verdadero)

Todas las opciones no reconocidas por will_paginate se convertirán en atributos HTML en el elemento contenedor para enlaces de paginación.

<%= will_paginate @posts, :estilo => 'color:azul' %>
page_entries_info(colección, opciones)
Muestra un mensaje que contiene el número de entradas mostradas frente al total.

<%= información_entradas_página @publicaciones %>
#=> Mostrando publicaciones 6 – 12 de 26 en total

  • :model: una clase de modelo o nombre de cadena (predeterminado: colección.primera.clase)
  • :html – establecido en falso para generar texto sin formato (predeterminado: verdadero)

Github: https://github.com/mislav/will_paginate

Leer artículos similares:

Suscríbete para recibir las últimas actualizaciones

Artículos Relacionados

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

es_ESSpanish