/ / Поискайте монгоиден низ със скоби - ruby-on-rail, regex, ruby-on-rails-3, mongodb, mongoid

Запитване mongoid низ с скоби - рубин на релси, regex, руби-на-релси-3, mongodb, mongoid

Имам монгоидно поле "стойност"като низ като"Сивата (Ст. 329)", и аз използвам regex за заявка на стойността чрез ajax, както следва:

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

Тя повдига грешки, докато стойността на моите параметри е "Сиватха (Св."докато аз пиша и това изобщо не връща резултат, когато имам точна стойност"Сивата (Ст. 329)".

Някой тук може ли да ми даде някои предложения? Благодаря.

Отговори:

2 за отговор № 1

Трябва да цитирате низове 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 вероятно е най-чистото нещо, което можете да направите.