/ / रेल मार्गों पर रूबी: कैसे या अपने मार्गों में इसे पैरामीटर किए बिना - रूबी-ऑन-रेल, रूबी, रेगेक्स, रूटिंग, मार्ग

रेल मार्गों पर रूबी: बिना पैरामीटर के अपने मार्गों में या कैसे - रूबी-ऑन-रेल, रूबी, रेगेक्स, रूटिंग, मार्ग

तो मेरे पास एक मार्ग है:

get "/:param1-:param2", param1: /some_constraint/, param2: /some_constraint/

कभी-कभी मुझे प्रारूप में यूआरएल मिल जाएगा /: param1 +: param2। इसके लिए खाते में, मैंने कोशिश की:

get "/:param1(-|+):param2", param1: /some_constraint/, param2: /some_constraint/

लेकिन समस्या यह है कि मुझे लगता है कि कोष्ठक बनाता हैयह वैकल्पिक है क्योंकि "रेल मार्ग कैसे काम करता है। मुझे लगता है कि मैं regex का उपयोग नहीं कर सकता जब तक एक चर यह निर्दिष्ट नहीं करता है। यदि मेरे पास एक चर है: प्रतीक (- | +) बाधा को असाइन किया गया है, तो यह काम करता है। लेकिन मैं नहीं चाहता कि प्रतीक एक चर हो क्योंकि मुझे पथ बनाने और अन्य चीजों को करने के लिए मुझे पैरामीटर के रूप में प्रतीक याद रखना होगा। क्या ऐसा करने का कोई बेहतर तरीका है?

उत्तर:

जवाब के लिए 2 № 1

मार्ग याद रखें। आरबी फ़ाइल एक रूबी फ़ाइल है, तो आप पाश कर सकते हैं:

%w(+ -).each |symbol|
get "/:param1#{symbol}:param2", param1: /some_constraint/, param2: /some_constraint/
end

symbol एक बेहतर नाम की कमी के लिए, लेकिन आप जो भी कर रहे हैं उसके संदर्भ में आप कुछ और पा सकते हैं।