15

アクティブな管理者でデフォルト値のフィルターを使用できることを知りたいですか? これは、管理者ユーザーのデータをプリロードするのに役立ちます。

filter  :country, :default=>'US'
4

2 に答える 2

22

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

更新:

場合によっては、params[:q] が空または params[:scope] が空の場合にフィルターを設定する必要があります

だからこれはうまくいくかもしれません

  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
于 2012-12-17T00:12:25.623 に答える
9

スコープとダウンロードで正しく動作するように 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
于 2016-04-29T13:47:55.727 に答える