您如何配置 ransack 以默认去除前导和尾随空格?
How do you configure ransack to strip leading and trailing whitespace as a default?
我在使用 ruby 搜索 gem (https://github.com/activerecord-hackery/ransack) 的 Web 应用程序中有多个搜索栏(超过 20 个)。
有谁知道如何去除所有(20 多个)搜索的前导和尾随空格?
我目前的解决方案是在应用程序助手中创建以下方法:
def strip_query
params[:q] = Hash[params[:q].map { |key, str| [key, str.strip] }] unless params[:q].blank?
end
并在每个控制器的开头调用方法:
include ApplicationHelper
before_action :strip_query, only: :index
我正在寻找一种不在所有 20 多个控制器中重复代码的 DRY 方法。
https://github.com/activerecord-hackery/ransack/issues/332
建议可以在 config/initializers/ransack.rb
文件中创建新谓词,但这需要更改每个视图中的搜索以引用新谓词。
针对我的问题定制它的最佳方法是什么?是否可以配置 ransack 以去除空格作为所有搜索查询的默认值?
我会在 application_controller.rb
中添加这样的方法
def query_params
query = params[:q] || {}
Hash[query.map { |key, value| [key, value.strip] }]
end
然后将控制器中的调用从 Foo.ransack(params[:q])
更改为:
Foo.ransack(query_params)
我在使用 ruby 搜索 gem (https://github.com/activerecord-hackery/ransack) 的 Web 应用程序中有多个搜索栏(超过 20 个)。
有谁知道如何去除所有(20 多个)搜索的前导和尾随空格?
我目前的解决方案是在应用程序助手中创建以下方法:
def strip_query
params[:q] = Hash[params[:q].map { |key, str| [key, str.strip] }] unless params[:q].blank?
end
并在每个控制器的开头调用方法:
include ApplicationHelper
before_action :strip_query, only: :index
我正在寻找一种不在所有 20 多个控制器中重复代码的 DRY 方法。
https://github.com/activerecord-hackery/ransack/issues/332
建议可以在 config/initializers/ransack.rb
文件中创建新谓词,但这需要更改每个视图中的搜索以引用新谓词。
针对我的问题定制它的最佳方法是什么?是否可以配置 ransack 以去除空格作为所有搜索查询的默认值?
我会在 application_controller.rb
def query_params
query = params[:q] || {}
Hash[query.map { |key, value| [key, value.strip] }]
end
然后将控制器中的调用从 Foo.ransack(params[:q])
更改为:
Foo.ransack(query_params)