我正在尝试构建基本搜索,其中只有整个确切的搜索字词显示结果。目前,它显示基于单个单词的结果。
以下是模型中的代码:
def search
find(:all, :conditions => ['term' == "%#{search}%"])
end
提前抱歉。我对铁杆很新!
谢谢。
答案 0 :(得分:2)
从"%#{search}%"
中删除%,以便它"#{search}"
。
%
是一个通配符,匹配包含该单词的每个结果。所以"%tea%"
例如会匹配撕裂,nestea和蒸汽,而这不是你想要的。
这应该产生完全匹配:
def search
find(:all, :conditions => ['term' == "#{search}"])
end
答案 1 :(得分:1)
您的代码由于多种原因而无法正常工作。
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