簡體   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