Ruby on rails 访问当前用户的对象时如何应用排序和分页?

Ruby on rails 访问当前用户的对象时如何应用排序和分页?,ruby-on-rails,ruby-on-rails-3,sorting,pagination,kaminari,Ruby On Rails,Ruby On Rails 3,Sorting,Pagination,Kaminari,我使用Rails 3.2和Kaminari进行分页。我使用相同的控制器操作(索引)呈现特定用户的所有文章和所有文章。我的控制器代码如下所示: def index @articles = (params[:mine] == "true") ? current_user.articles : Article.search(params[:search], :page => params[:page]) respond_to do |format| format

我使用Rails 3.2和Kaminari进行分页。我使用相同的控制器操作(索引)呈现特定用户的所有文章和所有文章。我的控制器代码如下所示:

  def index
    @articles = (params[:mine] == "true") ? current_user.articles : Article.search(params[:search], :page => params[:page])

    respond_to do |format|
      format.html
      format.json { render json: @articles }
    end
  end
在我的文章模型中:

  def self.search(search, opts)
    if search.present?
      where("category LIKE ? OR article_type LIKE ?", "%#{search}%","%#{search}%").page(opts[:page]).per(25)
    else
      page(opts[:page]).per(25)
    end
  end
我的问题是,在显示当前用户的文章时,我不知道如何应用排序和分页。顺便说一下,排序代码还没有。在当前代码中,我在访问索引操作时,在mine参数设置为true的情况下,遇到了“未定义方法”“当前页面”的错误


所以我的问题是,在使用
当前用户文章时,如何应用排序和分页?示例代码将非常有用。非常感谢

我想您应该用作用域替换类方法:

scope :search, lambda {|search, opts|
  if search.present?
    where("category LIKE ? OR article_type LIKE ?", "%#{search}%","%#{search}%").page(opts[:page]).per(25)
  else
    page(opts[:page]).per(25)
  end
}
然后:


谢谢,但我有个问题,为什么要使用示波器?它们不是和类方法一样吗?
作用域是可链接的,而不是类方法。我明白了。但是我仍然有点困惑,如何在一系列的文章对象(当前的_user.articles)上调用搜索方法?如果这是一个新手问题,很抱歉。在控制台中,它不是一个数组,而是一个活动记录查询或alikeYup,我已经检查了current_user.articles.class,它确实返回了一个数组。但它确实有效,这很奇怪。
source    = (params[:mine] == "true") ? current_user.articles : Article
@articles = source.search(params[:search], :page => params[:page])