繁体   English   中英

ActiveAdmin - 如何去除过滤器/搜索词

[英]ActiveAdmin - how can I strip the filter / search terms

在 ActiveAdmin 中,如何去除搜索词? (删除“ steve@example.com ”周围的空格)

我正在尝试将此应用于电子邮件字段。

ActiveAdmin.register User do
  ...
  filter :email, # <- I want to strip! this search term
  filter :name
  filter :address_phone
  ...

谢谢

在这个简单的情况下,您可以创建自己的 ransacker:

User ActiveRecord 模型中:

ransacker :stripped_email, formatter: proc { |v| v.strip } do |parent|
  parent.table[:email]
end

在您的用户 ActiveAdmin 资源中:

filter :stripped_email_cont

filter :stripped_email_eq

https://github.com/activerecord-hackery/ransack/wiki/Basic-Searching#eq-equals

你可以试试这个

  filter :email, :as => :check_boxes, :collection => proc { User.all.collect(&:email).map(&:strip) }

猴子补丁会做到这一点:这样的事情将适用于“cont”查询

  module ActiveAdmin
    module ResourceController::DataAccess
      def apply_filtering(chain)
        filter_params = params[:q] || {}
        filter_params.update(filter_params) do |key, value|
          key.include?("cont") ? value.strip : value
        end

        @search = chain.ransack(filter_params || {})
        @search.result
      end
    end
  end

使用 rails 5.2 和 active_admin 2.2.0

文件到config/initializers/active_filter.rb

module ActiveAdmin
  module ResourceController::DataAccess
    def apply_filtering(chain)
      filter_params = params[:q] || {}

      filter_params.each do |key, value|
        filter_params[key] = value.strip if value.class == String
      end

      @search = chain.ransack(filter_params || {})
      @search.result
    end
  end
end

重启你的服务器...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM