2013-10-04 12 views
14

Das ist mein Code im Index-Controller.undefined Methode `paginate 'für # <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)  

Ich benutze will_paginate gem für Paginierung. Ich benutzte es vorher ohne irgendeinen Fehler, aber als ich den Code von Order.all.paginate() zu Order.select{}.paginate() änderte, kommt Fehler.

Der Fehler, den ich bekommen habe ist

nicht definierte Methode `Paginieren‘

Ich brauche diese Werte Paginieren für sie in einer Tabelle zeigt. Wenn ich sie nicht paginieren kann, gibt es einen Workaround?

Antwort

48

Sie müssen die will_paginate-Methode für den Datentyp Array einbeziehen.

so zu tun, schließen die Linie

require 'will_paginate/array' 

an der Spitze des Controllers oder in der ApplicationController wenn Sie Paginierung in allen Ihren Controller benötigen.

+0

Die knifflige Sache ist, wenn Sie es woanders in anderen Controller benötigen und dieser vor dem Controller aufgerufen wird, ohne dass dann kein Fehler ausgelöst wird. Also vergiss nicht, es überall dort hinzuzufügen, wo Felder paginiert sind oder irgendwo darüber, z. Anwendungscontroller. – dduft

-1

Entfernen der .all arbeitete für mich.

Verwandte Themen