私は基本的な検索を構築しようとしている場合は、完全な検索用語だけが結果を示しています。現在は、個々の単語に基づいて結果を表示しています。正確な検索は、レールで
ここでは、モデルからコードです:事前に
def search
find(:all, :conditions => ['term' == "%#{search}%"])
end
申し訳ありませんが。私はレールがとても新しいです!
ありがとうございます。
私は基本的な検索を構築しようとしている場合は、完全な検索用語だけが結果を示しています。現在は、個々の単語に基づいて結果を表示しています。正確な検索は、レールで
ここでは、モデルからコードです:事前に
def search
find(:all, :conditions => ['term' == "%#{search}%"])
end
申し訳ありませんが。私はレールがとても新しいです!
ありがとうございます。
%を"%#{search}%"
から削除してください("#{search}"
)。
%
は、単語を含むすべての結果に一致するワイルドカードです。たとえば"%tea%"
は、あなたが望むものでないときには、涙、ネステア、スチームと一致します。
これは完全一致得られるはず:あなたのコードはいくつかの理由のために動作しません
def search find(:all, :conditions => ['term' == "#{search}"]) end
ありがとうございますが、まだ問題があります。たとえば、1つの文字「a」や例を検索すると、その名前に「a」という文字を含むすべてのリストが表示されます。 – TWill24
私のdef検索は何らかの理由で何の影響も与えないようです。私はそれをすべて削除しましたが、私はまだ同じ結果を得ています。 ここにはビューのコードがあります: '<%= form_tag root_path、:method => 'get'、:class =>" input- ":form-control"、:placeholder => "ベスト検索..."、::検索:params [:search]、リモート:true、:class = => "btn search-btn btn-lg"%> 'autofocus => true%<%= submit_tag" Search "、:name => nil、 – TWill24
を。
search
は常にnil
になります。['term' == "%#{search}%"]
の条件はあまり意味がありません。前に述べたように、search
は定義されていないため、条件は['term' == "%%"]
と同じです。文字列term
は%%
と等しくないため、基本的には全体の状態は[false]
です。私はこのようなものだろう:見つけ `試してみてください
# in your model
scope :search, -> (q) {
q.present? ? where("column_name LIKE :query", query: "%#{q}%") :none
}
# in your controller
def set_index
@b = Best.search(params[:search]).order(:cached_weighted_score => :desc)
end
を(:すべて:条件=> [ '用語' == "#{検索}"])Railsのの' – Pavan
どのバージョン使いますか? – spickermann
Rails 5.0.0を使用しています – TWill24