【问题标题】:Error with Kaminari pagination in Rails 3Rails 3中的Kaminari分页错误
【发布时间】:2012-01-02 14:02:07
【问题描述】:

我正在尝试使用 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”有问题,但我不知道如何解决。

谢谢!

【问题讨论】:

  • 你记得重启你的服务器吗?

标签: ruby-on-rails ruby-on-rails-3 pagination kaminari


【解决方案1】:

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

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

【讨论】:

  • 谢谢!我不知道。我使用了另一种方法,但结果相同。我把它放在我的控制器@stories = Story.where("keynote_id = ?", params[:keynote_id]).order("created_at DESC").page(params[:page])
  • 我得到了一个未定义的 Kaminari 方法“paginate_array”:模块如何解决这个问题?
【解决方案2】:

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

@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])

【讨论】:

    【解决方案3】:

    当页面方法需要一个 Active Record 关系时,您正在为它提供一个数组。如果您不熟悉该术语,那么您应该查看active record query guide

    根据 Kaminari 文档,这是您应该使用它的方式:

    @stories = Story.order(:created_at).page(params[:page])
    

    【讨论】:

    • 是的,但是如何在没有数组的情况下查询呢?这就是我需要的。
    猜你喜欢
    • 1970-01-01
    • 2012-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-26
    • 1970-01-01
    • 2011-10-18
    • 1970-01-01
    • 2012-02-18
    相关资源
    最近更新 更多