ruby on rails - per - ¿Rails tiene una solución de paginación integrada?
will_paginate bootstrap (4)
He notado que las gemas de paginación como mislav-will_paginate
son muy populares. ¿Esto se debe a que Rails no tiene una solución de paginación integrada o porque la solución integrada no es muy buena?
En Rails 2.0, la capacidad de paginación de ActionController se eliminó y se convirtió en un complemento para la compatibilidad hacia atrás llamada ''classic_pagination''. Sin embargo, de mis búsquedas de una solución de paginación para mí mismo, el consenso parece ser que el uso de ''classic_pagination'' no es óptimo.
Después de ver un par de podcasts y después de varias recomendaciones, opté por probar el complemento will_paginate y no he mirado atrás. Es rápido, fácil de usar y bien mantenido.
Creo que incluso V2 de Searchlogic recomienda su uso.
Rails tiene una paginación incorporada, pero es un módulo simple y no es adecuado para todas las necesidades. Sin embargo, a menos que tenga en mente las necesidades específicas de paginación, debería adaptarse a la mayoría de los propósitos.
Aquí hay un buen artículo sobre cómo usar la paginación de Rails
Si utiliza Rails 3, el complemento Kaminari será muy útil para la paginación. Github Railscasts
Yo recomendaría searchlogic . Tiene paginación incorporada y muchas otras cosas.
- Fácil filtrado
- Paginación
- Clasificación
Y .. para todos esos buenos ayudantes.
El código dice más que mil palabras ( no te confundas con el ejemplo de HAML, puedes usar las plantillas normales de Erb si las prefieres, el código / estructura es el mismo ):
Controlador:
def index
@search = User.new_search(params[:search])
@users, @users_count = @search.all, @search.count
end
Cosas de paginación en la vista:
== Per page: #{per_page_select}
== Page: #{page_select}
Ordenar como / por en la vista:
- unless @users_count.zero?
%table
%tr
%th= order_by_link :account => :name
%th= order_by_link :first_name
%th= order_by_link :last_name
%th= order_by_link :email
- @users.each do |user|
%tr
%td= user.account? ? user.account.name : "-"
%td= user.first_name
%td= user.last_name
%td= user.email
Filtros fáciles, simples y rápidos:
- form_for @search do |f|
- f.fields_for @search.conditions do |users|
= users.text_field :first_name_contains
= users.date_select :created_after
- users.fields_for users.object.orders do |orders|
= orders.select :total_gt, (1..100)
= f.submit "Search"
Y todo funciona en conjunto, así que cambiar una página y luego la clasificación, y agregar un filtro funciona sin perder ninguna de las otras configuraciones :).
Todo lo que necesitas está en tu entorno.
config.gem "searchlogic"
e instálalo con: rake gems:install
También puedes ver el ejemplo en línea