Osc*_*car 5 search meta-search ruby-on-rails-3.1
我在Rails 3.1中使用Ransack Gem.一切都按预期工作.但是,我有一个搜索表单,它将使用我遇到问题的Soundex列查找某个人.
在我的表单中,我有一个"given_name_soundex_cont"字段,用户将输入名称"Joe".我的控制器将"joe"转换为soundex代码,然后Ransack在"given_name_soundex"列中查找匹配项.
返回所有匹配的记录并且看起来很好,除了用户输入单词"joe"的字段现在显示soundex值(当然因为我更改了参数).
所以我想我可以添加一个"given_name_cont"字段并隐藏"given_name_soundex_cont"字段,但现在Ransack想要在查询中包含"given_name_cont",这是我不想要的.
有没有人知道如何在没有Ransack实际评估它们的情况下在Ransack搜索表单中包含字段.这样我就可以指定哪些字段不被评估,哪些不被评估.
如果它有帮助这就是我在我的控制器中所拥有的:
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
Run Code Online (Sandbox Code Playgroud)
在我看来:
<%= search_form_for @q do |f| %>
<label>Given Name:</label>
<%= f.text_field :given_name_soundex_cont %>
<%= f.submit %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4185 次 |
| 最近记录: |