arrow_back Volver
Inicio keyboard_arrow_right Artículos keyboard_arrow_right Artículo

Cómo paginar en Ruby on Rails

Claudia Gonzalez Fuentes

av_timer 2 Min. de lectura

remove_red_eye 3231 visitas

calendar_today 07 Julio 2023

Cuándo tenemos una aplicación con una gran cantidad de información para mostrar es importante incluir una páginacion. Esto nos ayuda a mejorar la experiencia de usuario, al dividir nuestros datos en múltiples páginas evitamos una sobrecarga en el sitio, optimizando el rendimiento de nuestra aplicación.
En este artículo, te enseñaré paso a paso, cómo paginar en Rails con la gema will_paginate.

  1. Agregaremos la gema en nuestro archivo Gemfile
      gem 'will_paginate', '~> 3.3'
    


  2. Instalamos la gema ejecutando en nuestra terminal:
     bundle install 
    


  3. Iremos al controlador donde queremos agregar la paginación, en este caso lo haremos con el controlador de productos.

    Así se vería el controlador sin paginar

     def index
         @products = Product.all
     end
    


  4. Adaptamos el codigo del controlador para agregar la paginación

     def index
         @products = Product.all.paginate(page: params[:page], per_page: 5)
     end
    

    En este caso, establecemos que se mostrarán 5 productos por cada página

  5. Revisamos que todo funcione correctamente, para esto corremos el servidor e iremos a la página de productos.

    Aca podremos ver que solo nos mostrará los 5 primeros productos.

    pagination-products.JPG

    Si queremos ir a las páginas siguientes lo podemos hacer de la siguiente forma, dentro del navegador en nuestro local:
    /products?page=2


  6. Iremos al archivo correspondiente a la vista index de productos, donde agregaremos los botones para ir a la página anterior y siguiente.

     <%= will_paginate @products, previous_label: 'Anterior', next_label: 'Siguiente' %>
    

    pagination-products-button1.JPG


  7. En caso que no exista una página anterior o siguiente, podemos agregar estilos para que el botón se vea como desactivado.

    Para esto, haremos cambios en el codigo anterior agregando una clase de CSS llamada disabled:

         <%= will_paginate @products, previous_label: 'Anterior', next_label: 'Siguiente', previous_disabled_class: 'disabled', next_disabled_class: @products.next_page ? nil : 'disabled' %>  
    



    Y luego agregaremos los estilos de CSS

         .disabled {
              opacity: 0.5;
              pointer-events: none;
         }
    

    pagination-products-button2.JPG

De esta forma es como podemos agregar una paginación dentro de nuestro proyecto de Rails, espero que te haya sido de ayuda.
Muchas gracias por leerme!

Bootcamp Ciencia de Datos

12 semanas de formación intensiva en los conocimientos, fundamentos, y herramientas que necesitas para ser científico de datos

Más información