多次搜索的分页

时间:2012-04-07 09:57:02

标签: ruby-on-rails search pagination

我有以下代码:

def index
    @games = Game.gamsearch(params[:gamsearch])
    @games = Game.consearch(params[:consearch]) if params[:consearch].present?
    @games = Game.gensearch(params[:gensearch]) if params[:gensearch].present?
    @games = Game.where("game_name LIKE ?", "#{params[:game_name]}%") if params[:game_name].present?
    @games = Game.where("console = ?", params[:console]) if params[:console].present?
end

我希望做的是将所有这些结果分页。现在我知道如何从单一搜索中分页,就像我在这里所做的那样:

def index
   user_relation = case params[:username].present?
   when true then User.where("username LIKE ?", "#{params[:username]}%")
   else User
   end
   @users = user_relation.paginate :page=>params[:page], :order => 'created_at desc', :per_page => 10
end

但是游戏控制器有5种可能的搜索方法,并且想知道我将如何应用分页。

任何帮助都会很棒,谢谢。

1 个答案:

答案 0 :(得分:0)

这应该可以通过将搜索结果全部附加到同一个数组而不是对此数组进行分页来实现。

喜欢:

def index
    @games = Array.new()
    @games << Game.gamsearch(params[:gamsearch])
    @games << Game.consearch(params[:consearch]) if params[:consearch].present?
    @games << Game.gensearch(params[:gensearch]) if params[:gensearch].present?
    @games << Game.where("game_name LIKE ?", "#{params[:game_name]}%") if params[:game_name].present?
    @games << Game.where("console = ?", params[:console]) if params[:console].present?
end

然后只对@games对象进行分页。

希望这有帮助!