2

我正在尝试使用 Kaminari 在我的 Rails 3 应用程序中实现分页,但出现以下错误:

undefined method `page' for #<Array:0x007fe43f4b0e80>

这就是我的控制器中的内容:

@stories = Story.find_all_by_keynote_id(@keynote, :order => 'created_at DESC').page(params[:page])

这就是我的观点:

<%= paginate @stories %>

我认为“find_all_by_keynote_id”有问题,但我不确定如何解决。

谢谢!

4

3 回答 3

5

Kaminari 还可以对数组进行分页(这就是你所拥有的)

array = Story.find_all_by_keynote_id(@keynote, :order => 'created_at DESC')
@stories = Kaminari.paginate_array(array).page(params[:page])
于 2011-11-21T00:58:23.153 回答
3

是的,但是如何在没有数组的情况下查询相同的内容?这就是我需要的。

@stories = Story.where(:keynote_id => @keynote).order('created_at DESC').page(params[:page])

或者

Keynote.has_many :stories

@stories = @keynote.stories.order('created_at DESC').page(params[:page])
于 2011-11-21T00:51:18.387 回答
2

当页面方法需要一个 Active Record 关系时,您正在为它提供一个数组。如果您不熟悉该术语,那么您应该查看活动记录查询指南

根据 Kaminari 文档,这就是你应该如何使用它:

@stories = Story.order(:created_at).page(params[:page])
于 2011-11-21T00:11:59.937 回答