2012-12-10 14 views
12

アクティブな管理者でデフォルト値のフィルタを使用することは可能ですか?これは、管理ユーザーのデータを事前にロードする場合に役立ちます。 [:Q]空であるかのparams [:スコープ]空のいくつかのあなたはのparamsの場合、フィルタを設定する必要がある場合にActiveAdmin - デフォルト値のフィルタ

filter :country, :default=>'US' 

答えて

18

あなたは

before_filter :only => [:index] do 
    if params['commit'].blank? 
     #country_contains or country_eq .. or depending of your filter type 
     params['q'] = {:country_eq => 'US'} 
    end 
    end 

UPD before_filter定義することによって、それを行うことができます

ので、これは良い仕事かもしれません

before_filter :only => [:index] do 
    if params['commit'].blank? && params['q'].blank? && params[:scope].blank? 
     #country_contains or country_eq .. or depending of your filter type 
     params['q'] = {:country_eq => 'US'} 
    end 
    end 
+0

これは魅力的です。ありがとうFivell! – TonyTakeshi

+0

いつもようこそ!) – Fivell

+1

これは、app/admin/model.rbファイル内のコントローラブロックに挿入する必要があります。例えば コントローラdo before_filter ... end –

4

適応されたFivellsの回答は、スコープとダウンロードで正しく機能します。ハッキリと感じるが、仕事をしているようだ。コメントに注釈を付ける。

before_filter only: :index do 
    # when arriving through top navigation 
    if params.keys == ["controller", "action"] 
     extra_params = {"q" => {"country_eq" => "US"}} 

     # make sure data is filtered and filters show correctly 
     params.merge! extra_params 

     # make sure downloads and scopes use the default filter 
     request.query_parameters.merge! extra_params 
    end 
    end 
関連する問題