2013-10-04 20 views
14

To mój kod w kontrolerze indeksów.niezdefiniowana metoda "paginate" dla # <Array: 0x0000000764d1b8>

order_customs = Order.select{|order| order.performer.white_label_id==1} 
@orders_customs_display=order_customs.paginate(:page => params[:page], :per_page => 5)  
@orders_customs_refunded=order_customs.select{|order| order.refunded==true}.paginate(:page => params[:page], :per_page => 5) 
order_white_label=Order.select{|order| order.performer.white_label_id!=1} 
@orders_white_label_display=order_white_label.paginate(:page => params[:page], :per_page => 5) 
@orders_white_label_refunded=order_white_label.select{|order| order.refunded==true}.paginate(:page => params[:page], :per_page => 5)  

Używam woli_paginować klejnot do stronicowania. Używałem go wcześniej bez żadnego błędu, ale kiedy zmieniłem kod z Order.all.paginate() na Order.select{}.paginate() pojawia się błąd.

Błąd Dostaję jest

niezdefiniowana metoda `paginate”

muszę paginate te wartości za pokazanie ich w tabeli. Jeśli nie mogę ich paginować, czy istnieje obejście?

Odpowiedz

48

Należy podać metodę will_paginate dla typu danych Array.

Aby to zrobić, to linię

require 'will_paginate/array' 

na górze kontrolera lub w ApplicationController jeśli trzeba paginacji we wszystkich kontrolerach.

+0

Trudne jest to, że jeśli potrzebujesz go gdzie indziej w innym kontrolerze i ten jest wywoływany przed sterownikiem bez wymagania, to nie zostanie zgłoszony żaden błąd. Więc nie zapomnij dodać go wszędzie, gdzie tablice są paginowane lub gdziekolwiek nad np. ApplicationController. – dduft

-1

Usunięcie .all dla mnie zadziałało.