[英]Exact Term Search In Rails
我正在嘗試構建一個基本搜索,其中只有整個確切的搜索詞顯示結果。 目前,它顯示基於單個單詞的結果。
這是模型中的代碼:
def search
find(:all, :conditions => ['term' == "%#{search}%"])
end
提前抱歉。 我對鐵桿很新!
謝謝。
從"%#{search}%"
刪除%,這樣就是"#{search}"
。
%
是一個通配符,匹配包含該單詞的每個結果。 因此, "%tea%"
會匹配撕裂,nestea和蒸汽,這不是你想要的。
這應該產生完全匹配:
def search find(:all, :conditions => ['term' == "#{search}"]) end
您的代碼因多種原因無效。
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.