0
私は私たちの製品を返す検索フォームを持っています。しかし、ユーザーが特定の単語(この例では 'color')を含む文字列を入力すると、あまりにも多くの商品が返されます。バックエンドで検索されるクエリの文字列 'color'を削除しようとしていますが、フロントエンドテンプレートの@unfiltered_queryを参照できるように、元のクエリの文字列を@unfiltered_queryとして保持しています。インスタンスが検索フォームに保存されないのはなぜですか?
if query.include? "color"
@unfiltered_query = query
end
query.slice! "color"
values = query.split
binding.pry
これは機能していなかったので、何が起こっていたのか調べるために走り回った。このフォームでは、「赤い塗料の色」を検索しました。私が@ unfiltered_queryを呼び出して呼び出すと、.sliceの前にメソッドを作成していても、 "Red paint"が出力されます。名前は?
私には何が欠けていますか?
ありがとうございました!
p.s.私はインスタンスを参照するために使用しているHTMLテンプレートには、次のとおりです。
<div class="search-input"><h2>
<% if @unfiltered_query.present? %>
<%= @unfiltered_query.titleize %>
<% else %>
<%= query.titlelize %>
<% end %>
</h2></div>
これは完璧に機能しました!参照渡しとは何ですか?ありがとうございました!!! – user3247042
'query'の値をコピーして' @ unfiltered_query'に代入するのではなく、 '@ unfiltered_query'は' query'への参照を持ちますので、どちらか一方を変更するともう一方に反映されます同じように。 –
ああ、今、@unfiltered_queryはフロントエンドで呼び出されていません。フロントエンドテンプレートで使用できるようにするために何かする必要がありますか? – user3247042