0

我正在使用 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

我的问题是在显示 current_user 的文章时我不知道如何应用排序和分页。顺便说一下,排序的代码还没有。使用当前代码,在将 mine 参数设置为 true 的情况下访问索引操作时,出现此错误“#Article 的未定义方法 `current_page'”。

所以我的问题是你在使用时如何应用排序和分页current_user.articles?示例代码真的很有帮助。非常感谢!

4

1 回答 1

1

我想你应该用范围替换你的类方法:

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
}

然后:

source    = (params[:mine] == "true") ? current_user.articles : Article
@articles = source.search(params[:search], :page => params[:page])
于 2012-08-27T09:37:42.850 回答