2012-12-10 31 views
12

Bạn có muốn biết rằng có thể có bộ lọc với giá trị mặc định với quản trị viên đang hoạt động không? Điều này sẽ hữu ích cho việc tải trước dữ liệu cho người dùng quản trị.ActiveAdmin - Bộ lọc có giá trị mặc định

filter :country, :default=>'US' 

Trả lời

18

Bạn có thể làm điều đó bằng cách định nghĩa 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:

trong một số trường hợp, bạn cần phải thiết lập bộ lọc nếu params [: q] là rỗng hoặc params [: Phạm vi] rỗng

vì vậy đây có thể làm việc tốt hơn

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

Nó hoạt động như một sự quyến rũ. Cảm ơn bạn Fivell! – TonyTakeshi

+0

luôn được chào đón!) – Fivell

+1

Điều này sẽ đi vào khối điều khiển bên trong tệp app/admin/model.rb. ví dụ. điều khiển làm before_filter ... kết thúc –

4

Điều chỉnh Fivells phù hợp để hoạt động chính xác với phạm vi và tải xuống. Cảm thấy hacky nhưng dường như làm công việc. Ý định chú thích trong nhận xét.

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 
Các vấn đề liên quan