2013-10-04 10 views
14

Questo mio codice nel controller dell'indice.metodo non definito `paginate 'per # <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)  

Sto usando gemma will_paginate per l'impaginazione. Stavo usando prima senza alcun errore, ma quando ho cambiato il codice da Order.all.paginate() a Order.select{}.paginate() errore sta arrivando.

L'errore che sto ottenendo è

indefinito metodo `paginate'

ho bisogno di impaginare quei valori per mostrare loro in una tabella. Se non riesco a impaginare, c'è una soluzione?

risposta

48

È necessario includere il metodo will_paginate per il tipo di dati Array.

Per fare ciò, includono la linea

require 'will_paginate/array' 

nella parte superiore del controller, oppure nel ApplicationController se avete bisogno di impaginazione in tutti i controller.

+0

La cosa complicata è se lo si richiede altrove in un altro controller e questo viene chiamato prima del controller senza richiedere quindi non viene generato alcun errore. Quindi non dimenticare di aggiungerlo ovunque gli array sono impaginati o ovunque sopra ad es. ApplicationController. – dduft

-1

Rimozione di .all ha funzionato per me.

Problemi correlati