Hola a todos,
tengo un problemilla y no se como solucionarlo.
En mi aplicación saco varios listados en tablas y los he de paginar.
Antes usaba la paginación de rails:
@producto_pages, @productos = paginate_collection …
y ahora quiero hacerlo mediante el plugin will_paginate.
En los listados me funciona bien:
@products = Product.paginate(:all, :page => params[:page], per_page
=> 10)
el problema es que en estos listados tengo un buscador, y según las
búsquedas tengo que devolver los resultados también paginados. Se puede
hacer lo de @productos_paginate_by_sql(…), lo que pasa que no
siempre obtengo los resultados mediante la consulta sql, sino que a
veces saco dos consultas y sumo o resto los arrays, y luego devuelvo
todo esto. Lo que querÃa saber es si hay alguna manera para pagina un
array creado por mi ‘a mano’ o mediante alguna operación con tro array.
Por ejemplo:
@array = []
array1 = Product.find(:all)
array2 = Package.find(id).products
@array = aarra1 & array2
@array.paginate(params[:page], 10)
También he visto por alguna página que se puede ahcer algo como esto:
Array.class_eval do
def paginate(page=1, per_page=15)
pagination_array = WillPaginate::Collection.new(page, per_page,
self.size)
start_index = pagination_array.offset
end_index = start_index + (per_page - 1)
array_to_concat = self[start_index…end_index]
array_to_concat.nil? ? [] : pagination_array.concat(array_to_concat)
end
end
lo que pasa que no se ni cómo ni donde habrÃa que gahcerlo, y si
realmente funciona.
Gracias de antemano por las respuestas
Un saludo