[英]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.