tim*_*ime 31 ruby ruby-on-rails kaminari
我搜索和搜索,但没有解决我的问题.这是我的控制器:
def show
@topic = Topic.find(params[:id])
@topic.posts = @topic.posts.page(params[:page]).per(2) # 2 for debugging
end
Run Code Online (Sandbox Code Playgroud)
功能很好,因为主题视图减少到两个帖子.但是,当我将此添加到show.html.erb时:
<%= paginate @topic.posts %>
Run Code Online (Sandbox Code Playgroud)
我给出了这个错误:
undefined method `current_page' for #<ActiveRecord::Relation:0x69041c9b2d58>
Run Code Online (Sandbox Code Playgroud)
Nic*_*nil 47
试试:
def show
@topic = Topic.find(params[:id])
@posts = @topic.posts.page(params[:page]).per(2)
end
Run Code Online (Sandbox Code Playgroud)
然后:
<%= paginate @posts %>
Run Code Online (Sandbox Code Playgroud)
Dar*_*cks 22
如果你在Kaminari中遇到分页错误
未定义的方法`total_pages'
要么
未定义的方法`current_page'
这可能是因为您传入的AR范围paginate没有page调用它的方法.
确保你总是打电话给page你将要传入的范围paginate!
如果您使用了已装饰的数组,这也适用 Kaminari.paginate_array
坏:
<% scope = Article.all # You forgot to call page :( %>
<%= paginate(scope) # Undefined methods... %>
Run Code Online (Sandbox Code Playgroud)
好:
<% scope = Article.all.page(params[:page]) %>
<%= paginate(scope) %>
Run Code Online (Sandbox Code Playgroud)
或者使用您自己的非AR阵列......
坏:
<% data = Kaminari.paginate_array(my_array) # You forgot to call page :( %>
<%= paginate(data) # Undefined methods... %>
Run Code Online (Sandbox Code Playgroud)
再次,这很好:
<% data = Kaminari.paginate_array(my_array).page(params[:page]) %>
<%= paginate(data) %>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22970 次 |
| 最近记录: |