Ruby on rails ActiveAdmin-如何剥离筛选/搜索词

Ruby on rails ActiveAdmin-如何剥离筛选/搜索词,ruby-on-rails,activeadmin,Ruby On Rails,Activeadmin,在ActiveAdmin中,如何剥离搜索词?(删除周围的空格“steve@example.com)) 我正在尝试将此应用于电子邮件字段 ActiveAdmin.register User do ... filter :email, # <- I want to strip! this search term filter :name filter :address_phone ... ActiveAdmin.register User do ... 过滤器:电子邮件,

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

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

ActiveAdmin.register User do
  ...
  filter :email, # <- I want to strip! this search term
  filter :name
  filter :address_phone
  ...
ActiveAdmin.register User do
...
过滤器:电子邮件,#你可以试试这个

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

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

User
ActiveRecord模型中:

ransacker :stripped_email, formatter: proc { |v| v.strip } do |parent|
  parent.table[:email]
end
在用户ActiveAdmin资源中:

filter :stripped_email_cont
filter:stripped\u email\u eq


猴子补丁可以做到这一点:类似的东西可以用于“cont”查询


使用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

重新启动服务器…

我的用户太多,无法像那样加载。我只想能够将电子邮件地址粘贴到搜索字段中,而不必担心复制/粘贴时可能出现的任何周围空白。有效的电子邮件周围不允许有空格,因此删除搜索地址不会有任何伤害。
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