簡體   English   中英

Kaminari&Rails分頁 - 未定義的方法`current_page'

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM