2013-10-02 15 views
12

क्या क्वेरी स्ट्रिंग में एक नए पैरा के साथ रेफरिंग यूआरएल पर रीडायरेक्ट करना संभव है?रेल 4 नए पैराम के साथ रीडायरेक्ट

कुछ इस तरह:

redirect_to :back, custom_param='foo' 
+0

जब आप कहते हैं कि 'बैक' क्या आप कहते हैं कि उपयोगकर्ता कहां से आया था या कुछ क्रिया' बैक? ' – tihom

+0

पहला ==>: वापस – user1066183

+0

ने अर्थ को और स्पष्ट करने के लिए प्रश्न संपादित किया। – tihom

उत्तर

5

आप सत्र में रख सकते हैं और फिर वापस अनुप्रेषित

session[:somekey] = value 
redirect_to :back 
+0

यह क्यों काम करना चाहिए ?? – user1066183

+0

जब आप सत्र का उपयोग करते हैं तो सत्र में मान अनुरोधों के बीच रहता है। – techvineet

+1

हाँ, लेकिन मुझे लिंक में पैराम लगाने की ज़रूरत है, मुझे इस तरह कुछ चाहिए: http: // localhost: 3000 /? Locale = 'pt' – user1066183

5

आज़माएं:

# get a URI object for referring url 
referrer_url = URI.parse(request.referrer) rescue URI.parse(some_default_url) 
        # need to have a default in case referrer is not given 


# append the query string to the referrer url 
referrer_url.query = Rack::Utils.parse_nested_query(referrer_url.query). 
        # referrer_url.query returns the existing query string => "f=b" 
        # Rack::Utils.parse_nested_query converts query string to hash => {f: "b"} 
        merge({cp: 'foo'}). 
        # merge appends or overwrites the new parameter => {f: "b", cp: :foo'} 
        to_query 
        # to_query converts hash back to query string => "f=b&cp=foo" 



# redirect to the referrer url with the modified query string 
redirect_to referrer_url.to_s 
        # to_s converts the URI object to url string 
+0

यहां एक गोचा। 'रैक :: Utils.parse_nested_query (referrer_url.query) 'स्ट्रिंग कुंजी के साथ हैश देता है। इसलिए यदि आपके 'referrer_url' में' cp = bar' है, तो इसकी वर्तमान क्वेरी स्ट्रिंग है। यूआरएल की क्वेरी होगी: 'सीपी = बार और सीपी = foo'। 'रैक :: Utils.parse_nested_query (referrer_url.query)' to 'रैक :: Utils.parse_nested_query (referrer_url.query) .symbolize_keys.' या 'रैक :: Utils.parse_nested_query (referrer_url.query) .stringify_keys' को आवश्यकतानुसार बदलें – DickieBoy

1

एक और दृष्टिकोण के माध्यम से इसे पारित करने के लिए हो सकता है "फ्लैश" (यह रीडायरेक्ट अनुरोध के बाद स्वचालित रूप से चला जाता है):

flash[:somekey] = 'some value' 
redirect_to :back 

हालांकि, मेरे सहयोगियों में से एक के रूप में उल्लेख किया गया है कि यह एक बेहतर तरीका है, इसे एक प्रश्नोत्तरी के रूप में वापस करने के लिए, इसे स्टेटलेस रखने और दो यूआरएल को अलग करने के लिए। ऐसा लगता है कि ऐसा करने के लिए एक अच्छा, अंतर्निहित रेल तरीका नहीं है, जो मुझे आश्चर्य करता है कि इस दृष्टिकोण के साथ और क्या गलत है।

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