/ / कोष्ठक के साथ क्वेरी मूंगॉइड स्ट्रिंग - रूबी-ऑन-रेल्स, रेगेक्स, रूबी-ऑन-रेल्स -3, मोनगोडब, मोंगोइड

ब्रैकेट्स के साथ क्वेरी मैंगॉयड स्ट्रिंग - रूबी-ऑन-रेल, रेगेक्स, रूबी-ऑन-रेल -3, मोंगोडब, मोंगॉयड

मेरे पास मोंगॉयड फील्ड है "मूल्य"स्ट्रिंग की तरह"शिवथा (सेंट 329)", और मैं निम्नलिखित के रूप में ajax के माध्यम से मान को क्वेरी करने के लिए regex का उपयोग करता हूं:

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 शायद सबसे साफ चीज है जो आप कर सकते हैं।