![](/img/trans.png)
[英](Rails Kaminari) undefined method `current_page' for #<Array:
[英]Kaminari & Rails pagination - undefined method `current_page'
我搜索和搜索,但沒有解決我的問題。 這是我的控制器:
def show
@topic = Topic.find(params[:id])
@topic.posts = @topic.posts.page(params[:page]).per(2) # 2 for debugging
end
功能很好,因為主題視圖減少到兩個帖子。 但是,當我將此添加到show.html.erb時:
<%= paginate @topic.posts %>
我給出了這個錯誤:
undefined method `current_page' for #<ActiveRecord::Relation:0x69041c9b2d58>
試試:
def show
@topic = Topic.find(params[:id])
@posts = @topic.posts.page(params[:page]).per(2)
end
然后:
<%= paginate @posts %>
如果你在Kaminari中遇到分頁錯誤
未定義的方法`total_pages'
要么
未定義的方法`current_page'
這可能是因為你傳入paginate
的AR范圍沒有調用它的page
方法。
確保始終在您要傳遞到paginate
的范圍上調用page
!
如果你有一個使用Kaminari.paginate_array
裝飾的數組,這也適用
壞:
<% scope = Article.all # You forgot to call page :( %>
<%= paginate(scope) # Undefined methods... %>
好:
<% scope = Article.all.page(params[:page]) %>
<%= paginate(scope) %>
或者使用您自己的非AR陣列......
壞:
<% data = Kaminari.paginate_array(my_array) # You forgot to call page :( %>
<%= paginate(data) # Undefined methods... %>
再次,這很好:
<% data = Kaminari.paginate_array(my_array).page(params[:page]) %>
<%= paginate(data) %>
前段時間,我對kaminari有一點問題,我通過為每個動作使用不同的變量名來解決。
讓我們在index
操作中說你稱之為:
def index
@topic = Topic.all.page(params[:page])
end
index
視圖適用於<%= paginate @topic %>
但是如果要在任何其他操作中使用相同的變量名,則會發生類似的錯誤。
def list
# don't use @topic again. choose any other variable name here
@topic_list = Topic.where(...).page(params[:page])
end
這對我有用。
拜托,試一試。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.