gpt4 book ai didi

search - Rails - 如何不评估 Ransack 搜索表单中的字段

转载 作者:行者123 更新时间:2023-12-04 21:49:19 26 4
gpt4 key购买 nike

我正在使用 Ransack Rails 3.1 中的 gem 。一切都按预期工作。但是,我有一个搜索表单,可以使用 a Soundex column 查找某个人。我遇到了问题。

在我的表单中,我有一个“given_name_soundex_cont”字段,用户将输入名称“Joe”。我的 Controller 然后将“joe”转换为 soundex 代码,然后 Ransack 在“given_name_soundex”列中查找匹配项。

所有匹配的记录都被返回并且看起来很好,除了用户输入单词“joe”的字段现在显示的是 soundex 值(当然是因为我更改了参数)。

所以我想我可以添加一个“given_name_cont”字段并隐藏“given_name_soundex_cont”字段,但现在 Ransack 想要在查询中包含“given_name_cont”,这是我不想要的。

有谁知道我如何在 Ransack 搜索表单中包含字段而无需 Ransack 实际评估它们。这样我就可以指定哪些字段不会被评估,哪些不会。

如果它有帮助,这就是我在 Controller 中所拥有的:

def index

if !params[:q].blank? # nil.blank? and [].blank? are true
search_params = params[:q]
search_params[:given_name_soundex_cont] = convert_to_soundex(search_params[:given_name_soundex_cont])
@q = Person.search(search_params)
@results = @q.result.limit(50)
else
@q = Person.search(params[:q])
@results = []
end

end


private
def convert_to_soundex(text)
Text::Soundex.soundex(text.to_s)
end

在我看来:
<%= search_form_for @q do |f| %>
<label>Given Name:</label>
<%= f.text_field :given_name_soundex_cont %>

<%= f.submit %>
<% end %>

最佳答案

创建一个格式化参数的 ransacker。我没有试过这个,但我认为它会起作用(通过 https://github.com/ernie/ransack/issues/36 )。

ransacker :given_name_soundex, :formatter => proc {|v| Text::Soundex.soundex(v)} do
parent.table[:given_name_soundex]
end

关于search - Rails - 如何不评估 Ransack 搜索表单中的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7926900/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com