जब आप सरणी के लिए एक अपरिभाषित विधि पेज मिलता है, शायद आप उपयोग कर रहे इस पंक्ति अपना पहला initializers में से एक में चलाने के लिए जोड़ें कामिनारी मणि और आप अपने मॉडल को नियंत्रक कार्रवाई के अंदर पगेट करने की कोशिश कर रहे हैं।
NoMethodError at/
undefined method `page' for # Array
वहाँ आप दो चीजों के अपने आप को याद दिलाने की जरूरत है, कि संग्रह आप पृष्ठ पर अंक लगाना करने को तैयार हैं एक सरणी या एक ActiveRecordRelation या बिल्कुल कुछ और हो सकता है।
अंतर को देखने के लिए, मान लीजिए कि हमारे मॉडल उत्पाद है और हम products_controller.rb पर हमारे सूचकांक कार्रवाई के अंदर हैं। हम अपने @products साथ निर्माण कर सकते हैं देता है निम्न में से एक का कहना है:
@products = Product.all
या
@products = Product.where(title: 'title')
या किसी और ख़ाली ... आदि
या तो तरीकों पर हम पाते हैं आपके @ उत्पाद, हालांकि कक्षा अलग है।
@products = Product.all
@products.class
=> Array
और
@products = Product.where(title: 'title')
@products.class
=> Product::ActiveRecordRelation
इसलिए संग्रह हम Kaminari पृष्ठ पर अंक लगाना करने को तैयार हैं के वर्ग के आधार पर प्रदान करता है:
@products = Product.where(title: 'title').page(page).per(per)
@products = Kaminari.paginate_array(Product.all).page(page).per(per)
यह थोड़ा संक्षेप में प्रस्तुत करना , अंकन जोड़ने के लिए एक अच्छा तरीका है अपने मॉडल के लिए:
def index
page = params[:page] || 1
per = params[:per] || Product::PAGINATION_OPTIONS.first
@products = Product.paginate_array(Product.all).page(page).per(per)
respond_to do |format|
format.html
end
end
और मॉडल आप पृष्ठ पर अंक लगाना चाहते हैं (product.rb) के अंदर:
paginates_per 5
# Constants
PAGINATION_OPTIONS = [5, 10, 15, 20]
जब संदर्भ के लिए Kaminari –
भी Class.page कोशिश कर की कोशिश कर रहा एक गैर-आरंभिकृत लगातार हो रही है (1) कक्षा के लिए मुझे अपरिभाषित विधि 'पृष्ठ' देता है: कक्षा –
क्या आपने वास्तव में इसे अपने जेमफाइल में जोड़कर कामिनरी लोड की है? –