【问题标题】:ActiveAdmin - Filter with default valueActiveAdmin - 使用默认值过滤
【发布时间】:2012-11-28 06:14:55
【问题描述】:

想知道是否可以使用活动管理员使用默认值进行过滤?这将有助于为管理员用户预加载数据。

filter  :country, :default=>'US'

【问题讨论】:

    标签: activeadmin


    【解决方案1】:

    你可以通过定义 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
    

    【讨论】:

    • 这应该放在 app/admin/model.rb 文件中的控制器块中。例如控制器做 before_filter... 结束
    • @patrick-davey,检查示例github.com/gregbell/active_admin/wiki/How-to-disable-sidebar .... 相同但更短
    • 这个sn-p有在范围切换时清除用户所有过滤器的问题。
    • 从 Rails 5 开始是 before_action
    【解决方案2】:

    改编后的 Fivells 答案可以正确使用范围和下载。感觉很hacky,但似乎可以完成这项工作。 cmets 中的注释意图。

      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
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-05
    相关资源
    最近更新 更多