will_paginate rails per page ruby-on-rails ruby ruby-on-rails-3 will-paginate kaminari

ruby-on-rails - rails will_paginate per page



Paginating una matriz en Ruby con will_paginate (4)

Tengo un array @ level1 que se ve así:

[[3.0, 4, 2], [2.0, 48, 3], [2.1, 56, 4], ............]

Quiero aplicar la paginación en esta matriz, por lo que cada página muestra solo algunas filas a la vez. Intenté esto:

@temp1 = @level1.paginate(:page => params[:page])

Pero arroja el siguiente error:

undefined method `paginate'' for [[3.0, 4, 2], [2.0, 48, 3], [2.1, 56, 4]]:Array

¿Cómo puedo realizar la paginación con will_paginate?


Claro, puedes usar WillPaginate::Collection para construir paginación arbitraria entre colecciones. Suponiendo una matriz llamada values :

@values = WillPaginate::Collection.create(current_page, per_page, values.length) do |pager| pager.replace values end

A continuación, puede tratar los @values como cualquier otra colección de WillPaginate, incluido el paso a will_paginate view helper.


Dado un collection colección en un proyecto de Rails

will_paginate ~>3.0.5 collection.paginate(page: params[:page], per_page: 10)

devuelve la paginación para los valores de la matriz.

No olvides require ''will_paginate/array'' en la parte superior del controlador.


Este es mi ejemplo basado en la respuesta de @ chris-heald

products = %w(i love ruby on rails) @products = WillPaginate::Collection.create(params[:page], params[:per_page], products.length) do |pager| pager.replace products[pager.offset, pager.per_page] end