繁体   English   中英

在Rails中的精确术语搜索

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

您的代码因多种原因无效。

  1. 您没有将任何值传递给该方法。 因此search将始终nil
  2. ['term' == "%#{search}%"]条件没有多大意义,因为 - 正如我之前所说的 - search未定义,因此条件与['term' == "%%"] 字符串term不等于%%因此整个条件基本上是: [false]
  3. Rails 5.0对查询使用不同的语法。 您使用的语法非常陈旧,不再起作用。

我会做这样的事情:

# 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM