Ruby on rails 访问当前用户的对象时如何应用排序和分页?
我使用Rails 3.2和Kaminari进行分页。我使用相同的控制器操作(索引)呈现特定用户的所有文章和所有文章。我的控制器代码如下所示: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
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])