我有一个返回我们产品的搜索表单。但是,如果用户输入的字符串包含某些单词(在本例中为' color'),则会返回太多的产品。我试图删除字符串' color'来自在后端搜索的查询,但将原始查询的字符串保持为@unfiltered_query,以便我可以在前端模板上引用@unfiltered_query。
if query.include? "color"
@unfiltered_query = query
end
query.slice! "color"
values = query.split
binding.pry
它没有用,所以我撬开看看发生了什么。在表格中,我搜索了#34;红色油漆颜色"。当我在pry中调用@unfiltered_query时,它输出" Red paint",即使我在.slice之前创建了方法!被称为?!
我错过了什么?
谢谢!
P.S。我用来引用该实例的HTML模板是:
<div class="search-input"><h2>
<% if @unfiltered_query.present? %>
<%= @unfiltered_query.titleize %>
<% else %>
<%= query.titlelize %>
<% end %>
</h2></div>
答案 0 :(得分:1)
你可以尝试这样:
if query.include? "color"
@unfiltered_query = query.dup
end
query.slice! "color"
values = query.split
binding.pry
这可能是由于通过引用传递。