Ante todo, lo siento si existe algún otro post con el mismo error ya
respondido,
pero mi amigo google ya no me trata como antaño.
Tal y como vi en un railcast, me puse a incluir las funciones de
paginación del plugin will_paginate en mi proyecto.
Usando un text_input (search) en un formulario de la vista,
para filtrar por tÃtulo.
Bien, en la capa de control, hago la llamada, tal que:
customer_controller.rb
@customers = paginate :per_page => 5, :page => page,
:conditions => [‘name like ?’,"%#{search}%"],
:order => ‘title’
y en la vista, en un list.rhtml, invoco el paginador:
list.rhtml
<%= will_paginate @customers %>
Tan sencillo como eso.
Pues bien, me escupe un error tal que:
undefined method `page_count’ for []:Array
Cierto, Array no lo tiene
El problema es que, aunque el método paginate devuelve un
WillPaginate::Collection, no castea bien al llevarlo a la vista, y lo
trata como un objeto Array.
Si tras invocar a “paginate” compruebo el tipo de @customers…
efectivamente, es un WillPaginate::Collection.
un @customers.class es un WillPaginate::Collection.
incluso llevo a la vista este dato (en el controlador @tipo =
@customers.class,
<%= @tipo %>
y obviamente renderiza “WillPaginate::Collection”
Haciendo un debug en index.rhtml (netbeans 6),
veo en el controlador que es un WillPaginate::Collection,
y en el index.rhtml, que @customers es un Array.
Sinceramente, yo me he rendido.
¿A alguien le ha ocurrido o se le ocurre algo?
Gracias.