2013-10-23 15 views
10

मैं एक समस्या है के लिए, रीडायरेक्ट कर हाल ही में एक नियंत्रक का नाम बदल दिया।रेल मार्गों क्वेरी स्ट्रिंग

मैं बुकमार्क्स पुराने नाम को संदर्भित साथ लोगों के लिए वर्ष नियंत्रक नाम का उपयोग कर कॉल स्वीकार करने के लिए मार्गों फ़ाइल बदल गया है,:

get '/old/about', to: redirect('/new/about') 
get '/old/report/:client', to: redirect('/new/report/%{client}') 
get '/old/:sub_path', to: redirect('/new/%{sub_path}') 

कि ठीक काम करता है। लेकिन क्वेरी स्ट्रिंग के साथ कॉल के लिए यह इसे/रिपोर्ट/200 पर अवरुद्ध करता है। ? उदाहरण के लिए:

:

/वर्ष/रिपोर्ट/200 c_id = 257 & अंत = 2013-10-19 & NUM_RESULTS = 294,540 & शुरू = 2013-10-13

इसे करने के लिए यूआरएल में कटौती

वर्ष/रिपोर्ट/200

और मुझे मानकों की कमी की वजह एक त्रुटि दर्शाता है। क्या आप जानते हैं मैं क्या कर सकता हूं? (मैंने सोचा था कि: मार्गों में उप_पैथ लाइन मदद करेगा लेकिन नहीं) :(

+1

संभावित डुप्लिकेट: http://stackoverflow.com/questions/14039181/कैसे करते हैं-मैं करते हैं एक पुनर्निर्देशन-मार्गों-rb-गुजर-ऑन-द क्वेरी स्ट्रिंग में –

+0

मुझे लगता है कि तुम सही हो सकता है,, मुझे इसे बाहर की जाँच करते हैं धन्यवाद एक बहुत! – Alejandra

उत्तर

11

मैट द्वारा उल्लिखित प्रश्न ने मुझे अपना जवाब जानने में मदद की (बहुत बहुत धन्यवाद!) यह मेरे विशिष्ट मामले के लिए थोड़ा अलग था। इम एलेजांड्रा के जवाब पर जवाब यह है कि भविष्य में संदर्भ के लिए मेरे लिए काम किया छोड़ने

match "/old/report/:client" => redirect{ |params, request| "/new/report/#{params[:client]}?#{request.query_string}" } 
+0

यह मेरे लिए बहुत उपयोगी था - वापस आने और इसे पोस्ट करने के लिए धन्यवाद। – duma

+0

मैं यह जांचने के लिए थोड़ा सा संशोधित करूंगा कि request.query_string वर्तमान समाधान के रूप में मौजूद है, हमेशा '?' जोड़ देगा नीचे तक। –

1

भवन, अधिक वर्बोज़ लेकिन ? बिना हो, तो कोई स्ट्रिंग:।

get "/old/report/:client", to: redirect{ |params, request| ["/new/report/#{params[:client]}", request.query_string.presence].compact.join('?') } 

तो /old/report/:client?with=paramबन जाएगा, और /old/report/:client/new/report/:client बन जाएगा।

7

संशोधित redirect क्वेरी स्ट्रिंग को बचाने के लिये path: विकल्प का उपयोग करने:

- get '/old/about', to: redirect('/new/about') 
+ get '/old/about', to: redirect(path: '/new/about') 

यह redirect के लिए एपीआई डॉक्स में प्रदर्शित किया गया है, को देखने के http://api.rubyonrails.org/classes/ActionDispatch/Routing/Redirection.html#method-i-redirect

+1

एपीआई यहाँ प्रलेखन: http://api.rubyonrails.org/classes/ActionDispatch/Routing/Redirection.html#method-i-redirect – htanata

संबंधित मुद्दे