मेरे पास मोंगॉयड फील्ड है "मूल्य"स्ट्रिंग की तरह"शिवथा (सेंट 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
शायद सबसे साफ चीज है जो आप कर सकते हैं।