ActiveAdmin - 如何删除过滤器/搜索项

时间:2015-01-08 10:23:24

标签: 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
  ...

由于

4 个答案:

答案 0 :(得分:1)

您可以在这种简单的情况下创建自己的搜索引擎:

<{1>} ActiveRecord模型中的

User
您的User ActiveAdmin资源中的

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

filter :stripped_email_cont

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

答案 1 :(得分:0)

你可以试试这个

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

答案 2 :(得分:0)

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

  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

答案 3 :(得分:0)

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

重新启动服务器...