【发布时间】:2017-02-25 10:11:31
【问题描述】:
我有一个带有过滤器here 的搜索系统。这个系统就像一个魅力,但我在小写/大写和重音方面遇到了一些问题。
例如,如果我搜索“marée”,我会得到结果,但如果我搜索“MAREE”或“Marée”或“maree”。我没有结果。
我想解决这个问题。我该如何解决这个问题?谢谢。
我的控制器
def resultnohome
if params[:query].blank?
redirect_to action: :index and return
else
@campings = Camping.searchi(params[:query], params[:handicap], params[:animaux], params[:television], params[:plage], params[:etang], params[:lac])
if params[:query] == "aube"
@pub = Camping.find_by_id(1)
else
end
end
end
我的模型
def self.searchi(query, handicap, animaux, television, plage, etang, lac)
return scoped unless query.present?
result = left_outer_joins(:caracteristiquetests, :situations).where('nomdep LIKE ? OR name LIKE ? OR nomregion LIKE ? OR commune LIKE?', "%#{query}%", "%#{query}%", "%#{query}%", "%#{query}%")
result = result.where('handicap LIKE ?', "%#{handicap}%") if handicap
result = result.where('animaux LIKE ?', "%#{animaux}%") if animaux
result = result.where('television LIKE ?', "%#{television}%") if television
result = result.where('plage LIKE ?', "%#{plage}%") if plage
result = result.where('etang LIKE ?', "%#{etang}%") if etang
result = result.where('lac LIKE ?', "%#{lac}%") if lac
return result
end
【问题讨论】:
-
完全取决于您使用的数据库。 Postgres 有一个
ILIKE关键字,它将执行不区分大小写的搜索。在 MYSQL 中,您使用较低的函数WHERE "foo" LIKE %LOWER("Bar")%。 -
@max 我目前使用 SQLite。你有什么想法吗?
-
不要使用 SQLite,它是一个玩具数据库。专注于您稍后将在生产中使用的数据库。我会选择 Postgres
-
我想我会选择 Mysql。但是目前在生产中你对我的问题有什么想法吗?
标签: ruby-on-rails search params