2011-09-18 14 views
34

मेरे पास वर्तमान में मेरे हेडर बार में एक लॉगिन पॉपअप है जो मेरी वेबसाइट में प्रत्येक पृष्ठ पर है। मैं वर्तमान पृष्ठ को फिर से लोड करने में सक्षम होना चाहता हूं कि सफल लॉगिन के बाद व्यक्ति चालू है। मैं नियंत्रक में यह कैसे करूँ?मैं रेल पर रूबी में वर्तमान पृष्ठ को फिर से लोड कैसे कर सकता हूं?

def create 
    #declaring and defining user variable stuff 
    if user.save 
    #reload current page <--how do I do this? 
    end 
end 

धन्यवाद

+0

यह एक जवाब है कि उपयोगी http://stackoverflow.com/a/8619748/1770571 –

उत्तर

45

अपने आवेदन के लिए, मैं redirect_to :back उपयोग करें और यह काम कर देता है। हालांकि, मुझे संदेह है कि इसमें गैर सामान्य उपयोग मामले (उपयोगकर्ता) में एक त्रुटि हो सकती है (उपयोगकर्ता एक विशेष पृष्ठ से आया है?) लेकिन मुझे अब तक मेरे ऐप में यह नहीं मिला है।

+2

यह मेरे लिए काम करता है के लिए हो सकता है। आप वर्तमान पृष्ठ को फिर से लोड नहीं कर रहे हैं, जितना आप एक क्रिया क्रिया के लिए जा रहे हैं और फिर फिर से ... यदि आप AJAX का उपयोग करते हैं, तो आप उस भाग को अपडेट करेंगे जहां आप एक दोस्त को लॉग इन करते हैं ... और उसे उस पृष्ठ पर रखें। – pjammer

+0

redirect_to के लिए प्रलेखन: http://api.rubyonrails.org/classes/ActionController/Redirecting.html – Nate

+12

रेल 5 के लिए, 'redirect_to: back' को 5.1 में हटाया गया है, और इसके बजाय' redirect_back (fallback_location: fallback_location) इस्तेमाल किया जाना चाहिए। – DuckNG

32

यदि आप एक एक्सएचआर अनुरोध के साथ पृष्ठ को रीफ्रेश करने के लिए पृष्ठ (आमतौर पर redirect_to :back) प्राप्त करने का कोई तरीका ढूंढ रहे हैं, तो आपको प्रतिक्रिया प्रकार बदलने के लिए कोई रास्ता नहीं देखना है - बस पृष्ठ को फिर से लोड करने के लिए कहें इनलाइन जेएस।

format.js {render inline: "location.reload();" }

Elena तरह का उल्लेख है, यह इतना की तरह, एक respond_to ब्लॉक में जाना चाहिए: मेरे लिए काम किया ऊपर

respond_to do |format| 
    format.js {render inline: "location.reload();" } 
end 
10

Archonic के जवाब। हालांकि, रेल 3 में, मैं एक 'ArgumentError (बहुत कुछ तर्क)' से बचने के लिए क्रम में एक respond_to ब्लॉक में इस जगह के लिए किया था त्रुटि:

respond_to do |format| 
    format.js {render inline: "location.reload();" } 
end 
8

रेल में 5 redirect_to :backis improved द्वारा:

redirect_back(fallback_location: root_path) 
1

रेल 5 (या शायद पुराने संस्करण) के बाद, आपके पास request.referrer विधि है। आप बस कंट्रोलर से रेफरर तक रीडायरेक्ट करते हैं और यह उस पृष्ठ को खोलता है जहां से अनुरोध आया था।

redirect_to request.referrer, notice: "You're being redirected"

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

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