[英]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.