![](/img/trans.png)
[英]Activeadmin: how to filter for strings that match two or more search terms
[英]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.