我有以下代码:
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种可能的搜索方法,并且想知道我将如何应用分页。
任何帮助都会很棒,谢谢。
答案 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
对象进行分页。
希望这有帮助!