用括号查询mongoid字符串

时间:2013-09-26 04:15:44

标签: ruby-on-rails regex ruby-on-rails-3 mongodb mongoid

我将mongoid字段' '作为字符串,如“ Sivatha(St. 329)”,我使用正则表达式来查询值通过ajax如下:

Street.any_of({ :value => /.*#{params[:q]}.*/i }))

它引发了错误,而我的参数值是“ Sivatha(圣”,而我正在打字时,当我有确切的值时,它根本不会返回结果“ Sivatha(St) .329)“。

这里有人可以给我一些建议吗?感谢。

1 个答案:

答案 0 :(得分:2)

在将字符串插入正则表达式之前,您应该使用Regexp.quote引用字符串:

:value => /.*#{Regexp.quote(params[:q])}.*/i

你不需要领先和尾随.*,他们不会为你做任何事情,所以你可以这样说:

:value => /#{Regexp.quote(params[:q])}/i

如果你没有使用不区分大小写的正则表达式,那么你可以使用Regexp.union来引用和regex-ify你的字符串:

:value => Regexp.union(params[:q])

但是没有干净的方法来添加/i选项,因此/#{Regexp.quote(params[:q])}/i可能是最干净的事情。