2012-04-02 8 views
0

ユーザーの検索機能が1つしかないので、うまくいきました。次のテキストにページ番号を付け加えよう:

しかし、私はゲームテーブルにページネーションを追加したいが、ゲームのための5つの検索機能があるので、それを実装する方法がわからない。私は次のコントローラーメソッドにページネーションを追加する方法について私は不思議に思っていました。

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 

答えて

0

私はあなたがゲームのクラスでActiveRecordの関係を返すスコープやメソッドを使用すべきだと思うと(私はあなたがでAND演算子condidtionsを組み合わせたいと思います)、それらをチェーン:

class Games 
    scope gamsearch, lambda { |search_param| your_conditions } 
    scope consearch, lambda { |search_param| your_conditions } 
    scope gensearch, lambda { |search_param| your_conditions } 
    scope game_name, lambda { |game_name_param| where("game_name LIKE ?", "#{game_name_param}%") } 
    scope console, lambda { |console_param| where("console = ?", console_param) } 
end 


def index 
    scope = Game.gamsearch(params[:gamsearch]) 
    scope = scope.consearch(params[:consearch]) if params[:consearch].present? 
    scope = scope.gensearch(params[:gensearch]) if params[:gensearch].present? 
    scope = scope.game_name(params[:game_name]) if params[:game_name].present? 
    scope = scope.console(params[:console]) if params[:console].present? 
    @games = scope.paginate 
end 
+0

私はスコープを使用してみましたが、既に定義されているにもかかわらず、定義されていないメソッドをページングすることを続けました。 – user1222136

関連する問題