Имам монгоидно поле "стойност"като низ като"Сивата (Ст. 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
вероятно е най-чистото нещо, което можете да направите.