2011-06-29 11 views
22

डेविस का उपयोग करके उपयोगकर्ता को रीडायरेक्ट करने के लिए सबसे अच्छा अभ्यास क्या है, उस पृष्ठ पर वापस जो वह लॉग आउट करने के बाद वर्तमान में है?साइन आउट

devise docs निम्नलिखित (में अपने आवेदन नियंत्रक) ओवरराइड करने के लिए कहते हैं:

def after_sign_out_path_for(resource_or_scope) 
    # logic here 
end 

कौन सा बहुत आसान है। हालांकि, मैं, एक सत्र चर होने के लिए पिछले पृष्ठ सेट कर रहा हूं इस तरह:

session[:return_to] = request.fullpath 

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

+0

शायद सत्र के बजाय फ्लैश में return_to पथ को सेट करने का प्रयास करें। फ़्लैश [: return_to] –

+0

दिलचस्प विचार - मुझे कक्षा चर बनाने में खुशी होगी, लेकिन यह स्पष्ट नहीं है कि विधि निष्पादन आदेश क्या है, और दस्तावेज़ मदद नहीं करते हैं। – aronchick

उत्तर

33

यदि आप हमेशा उस पृष्ठ का उपयोग कर रहे हैं जहां लॉगआउट लिंक क्लिक किया गया था तो आप अनुरोध पर रेफरर का उपयोग कर सकते हैं।

def after_sign_out_path_for(resource_or_scope) 
    request.referrer 
end 
+0

दिलचस्प, मैंने पूरी तरह से अनदेखा कर दिया था क्योंकि मुझे यह सुनिश्चित करने के लिए सामने वाले तरफ सभी प्रकार के काम करना पड़ता था कि वे साइन-इन पेज पर नहीं थे, लेकिन मुझे लगता है कि यह काम करता है! – aronchick

+0

आज भी यही समस्या है और यह ठीक है, धन्यवाद! –

+0

बहुत अच्छा। वास्तव में मैं उम्र के लिए क्या करने की कोशिश कर रहा था। एक भयानक जवाब के लिए धन्यवाद! –

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