2012-12-26 17 views
13

पर गुजरने वाले path.rb में पुनर्निर्देशन कैसे करूं। मेरे पास मेरे मार्गों में एक फ़ंक्शनिंग रीडायरेक्ट था। आरबी जैसे;मैं क्वेरी स्ट्रिंग

match "/invoices" => redirect("/dashboard") 

मैं अब, इस ताकि, उदा करने के लिए एक क्वेरी स्ट्रिंग जोड़ना चाहते हैं

/invoices?show=overdue 

/dashboard?show=overdue 

मैं कई बातें की कोशिश की है करने के लिए निर्देशित किया जाएगा। मुझे सबसे नज़दीक मिला है;

match "/invoices?:string" => redirect("/dashboard?%{string}") 

जो मुझे सही आउटपुट देता है लेकिन मूल URL अभी भी ब्राउज़र में प्रदर्शित होता है।

मुझे यकीन है कि मुझे कुछ आसान याद आ रहा है, लेकिन मैं नहीं देख सकता।

उत्तर

16

आप इस मामले में अनुरोध वस्तु का उपयोग कर सकते हैं:

match "/invoices" => redirect{ |p, request| "/dashboard?#{request.query_string}" } 
+1

उत्तर देने के लिए धन्यवाद। यह भी ध्यान रखें कि यह कोड एसईओ पक्ष से अच्छा नहीं है क्योंकि अगर query_string खाली हो जाएगा, तो यूआरएल "..." जैसा दिखता है – woto

+1

इस मामले में 'मैच "/ चालान" => रीडायरेक्ट {| पी, अनुरोध | request.query_string.blank? ? "/ डैशबोर्ड": "/ डैशबोर्ड ?#{request.query_string}"} 'करना चाहिए ... –

9

सबसे आसान तरीका यह करने के लिए (कम से कम रेल में 4) रीडायरेक्ट कॉल के लिए विकल्प मोड का उपयोग करना है ..

get '/invoices' => redirect(path: '/dashboard') 

यह केवल पथ घटक को बदल देगा और क्वेरी पैरामीटर अकेले छोड़ देगा।

+0

धन्यवाद !!! इससे पहले कि मैंने यह हालिया, सरल एक पाया जो मेरे सभी मुद्दों को हल करने से पहले लगभग 6 अलग-अलग SO पोस्टों के माध्यम से चला गया। – iamse7en

+0

ध्यान दें कि यह यूआरएल में पथ से निकाले गए पैराम को आगे नहीं भेजता है जैसे 'चालान /: आईडी' –

+1

@the_minted वास्तव में आप केवल% {id} का उपयोग करके कर सकते हैं। उदाहरणों के लिए 'प्राप्त करें'/चालान /: आईडी '=> पुनर्निर्देशित करें (पथ:'/new_invoices /% {id} ') ' – Urkle

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

  • कोई संबंधित समस्या नहीं^_^