我無法超越這個。我知道我讀過數組中沒有頁面方法,但我該怎麼辦?未定義的方法`頁面'爲#<Array:0xafd0660>
如果我在控制檯中運行Class.all,它會返回#,但是如果我運行Class.all.page(1),則會出現上述錯誤。
任何想法?
我無法超越這個。我知道我讀過數組中沒有頁面方法,但我該怎麼辦?未定義的方法`頁面'爲#<Array:0xafd0660>
如果我在控制檯中運行Class.all,它會返回#,但是如果我運行Class.all.page(1),則會出現上述錯誤。
任何想法?
否數組沒有頁面方法。
看起來像你使用kaminari。 Class.all返回一個數組,因此你不能調用它的頁面。相反,請直接使用Class.page(1)。
對於普通陣列,雷有很大的輔助方法:
Kaminari.paginate_array([1, 2, 3]).page(2).per(1)
我有同樣的錯誤。捆綁包更新是否重新啓動服務器。其中一個固定它。
雷現在有分頁陣列的方法,所以你可以做這樣的事情在你的控制器:
myarray = Class.all
@results = Kaminari.paginate_array(myarray).page(params[:page])
我得到一個未定義的方法「paginate_array」Kaminari:模塊如何解決這個問題? –
@Þaw聽起來就像你使用的是舊版本的Kaminari。 – DaveStephens
我通過手動調用雷的鉤子固定的問題。添加此行到您的第一個初始化運行:
Kaminari::Hooks.init
我在另一個答案公佈更多的細節:
undefined method page for #<Array:0xc347540> kaminari "page" error. rails_admin
當你的陣列一個未定義的方法頁,也許你正在使用kaminari寶石,你正在嘗試在控制器動作中對你的模型進行分頁。
NoMethodError at/
undefined method `page' for # Array
有你需要提醒你的兩件事情自我,那你願意分頁集合可能是一個陣列或ActiveRecordRelation或ofcourse別的東西。
要看到差距,可以說我們的模型是產品,我們是我們指數行動中對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
因此視類的集合,我們都願意分頁雷的提供:
@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]
很好解釋:) ..謝謝 – inquisitive
嘗試引用雷 –
也試圖Class.page時,我發現了一個未初始化的常數(1)爲我提供了未定義的方法'頁面'Class:Class –
您是否已經將kaminari加入到您的Gemfile中? –