2017-05-21 22 views
9

मैं निम्नलिखित का उपयोग करने के कोशिश कर रहा हूँ: क्यों यह हो रहा हैरेल redirect_to: वापस काम नहीं कर रहा

undefined method `back_url' for #<PaymentsController:0x007ff682c467a8> 

:

class PaymentsController < ApplicationController 

    def addproduct 
    (session[:products] ||= []) << params[:item] 
    redirect_to :back 
    end 

end 

मैं इस अपवाद मिल गया? redirect_to :back के बजाय

redirect_back(fallback_location: root_path) 
+0

क्या आपको कंसोल में 'ActionController :: RedirectBackError' मिलता है? –

+0

कंसोल में मुझे अपवाद मिला है जिसे मैंने लिखा था। – Lechucico

+0

@Lechucico: आप रेल का किस संस्करण का उपयोग कर रहे हैं? रेल 5 से, यह फ़ॉलबैक विकल्प के साथ 'redirect_back' है। – Surya

उत्तर

32

रेल 5 redirect_back है,:

+0

लेकिन यह मुझे root_path पर रीडायरेक्ट करेगा? – Lechucico

+0

@ लेचुकोको: यही बात है। यह root_path पर रीडायरेक्ट करेगा, केवल तभी जब अनुरोध से उत्पन्न पथ पर रीडायरेक्ट करने का कोई तरीका नहीं है। – Surya

6

redirect_to :back रेल 5.0 में पदावनत किया गया था (PR देखें) और रेल 5.1

उपयोग में हटा दिया गया था निम्नलिखित बजाय। यह बदल दिया गया था क्योंकि अनुरोध का HTTP_REFERER मौजूद नहीं था जब यह अपवाद उठाने के लिए उपयोग किया जाता था।

तो इस का उपयोग करें:

redirect_back fallback_location: root_path 

आप अपने आवश्यकताओं के अनुसार कुछ और करने के लिए root_path बदल सकते हैं।

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