2012-12-10 81 views
12

想知道是否可以使用活动管理员使用默认值过滤?这将有助于为管理员用户预加载数据。 [:Q]为空或PARAMS [:范围]空ActiveAdmin - 使用默认值过滤器

在你需要设置过滤器,如果PARAMS某些情况下

filter :country, :default=>'US' 

回答

18

您可以通过定义的before_filter

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 :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文件中的控制器块中。例如 控制器做 before_filter ... 结束 –

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