2011-03-28 15 views
15

मेरे पास डेविस के साथ एक रेल 3 परियोजना है, पुष्टि करने योग्य सक्षम है ताकि उपयोगकर्ता को पंजीकरण के बाद ईमेल के माध्यम से अपने खाते की पुष्टि करनी पड़े। वर्तमान में प्रोजेक्ट उपयोगकर्ता को लॉगिन पेज पर लौटाता है और "आपने सफलतापूर्वक साइन अप किया है ..." नोटिस फेंकता है। इसके बजाय मैं उन्हें "धन्यवाद" पृष्ठ पर रीडायरेक्ट कर रहा हूं, आगे के निर्देशों के साथ (अपना ईमेल, स्पैम फ़ोल्डर, ब्ला ब्लाह देखें)।रेल 3 और डिवाइसेज: साइनअप के बाद पृष्ठ पर रीडायरेक्ट करना (पुष्टि करने योग्य)

मेरा पहला स्टॉप डेविस विकी था, जहां मैं found this page था। देखा काफी आसान है, मैं निम्नलिखित परिवर्तन किए गए है और वास्तव में दिशा-निर्देश का पालन किया ...

/app/controllers/registrations_controller.rb

class RegistrationsController < Devise::RegistrationsController 
    protected 
     def after_sign_up_path_for(resource) 
     "http://google.com" 
     end   
end 

/config/routes.rb

devise_for :users, :controllers => { :registrations => "registrations" } 

दिशा में मुझे जो संशोधन करना था, वह "पंजीकरण" फ़ोल्डर को/ऐप/व्यू/डिवीज व्यू फ़ोल्डर से बाहर और शीर्ष/ऐप/दृश्य फ़ोल्डर में, ई के रूप में ले जा रहा था रबर वापस आ गया कि विचार अब गायब थे। वैसे भी, कंट्रोलर काम करने के लिए ओवरराइड ओवरराइड होने के बावजूद (मुझे नहीं लगता कि विचार मूल रूप से टूटे होंगे), वे दिशाएं काम नहीं करतीं ... पृष्ठ after_sign_up को अनदेखा करता है और साइन अप करने के बाद लॉगिन पृष्ठ पर वापस आ जाता है।

अन्य स्टैक ओवरफ़्लो थ्रेड सहित इंटरनेट पर शिकार करना चाहता था, लेकिन मुझे जो कुछ भी मिला वह मेरे लिए काम नहीं कर रहा है ... या तो साइन इन के लिए साइन अप रीडायरेक्ट करने का जवाब है, या वास्तव में वे क्या कर रहे हैं साइन इन के बाद रीडायरेक्ट बदल रहा है (जैसा कि देवता सामान्य रूप से बिना पुष्टि किए सक्षम पंजीकरण के बाद स्वचालित रूप से साइन इन करता है)।

अन्य चीजें मैंने कोशिश की है ...

  1. after_sign_up_path_for (संसाधन) आवेदन नियंत्रक में जा। काम नहीं करता विचित्र रूप से पर्याप्त, after_sign_in_path_for (संसाधन) के साथ ऐसा करने और उपयोगकर्ता के रूप में साइन इन करने के लिए रीडायरेक्ट करता है।

  2. रजिस्ट्रेशन_controller.rb से/app/नियंत्रकों/में/ऐप/नियंत्रकों/उपयोगकर्ता फ़ोल्डर में स्थानांतरित करना और सभी मार्ग/संदर्भ/आदि को अद्यतन करना। नही जाओ।

  3. डेविस के रजिस्ट्रेशन_controller.rb को अपने स्वयं के रजिस्ट्रेशन_controller.rb में कॉपी करना। काम नहीं किया, बस एक गलती फेंक दी और मैंने इसे सब वापस ले लिया।

  4. मैंने def_inactive_sign_up_path_for (संसाधन) के बाद def की कोशिश की, जैसा कि मैंने सोचा था कि खाता सक्रिय नहीं था, फिर भी अपराधी था। यह भी अनदेखा किया जाता है।

  5. यह भी उल्लेखनीय है कि मैंने इन प्रमुख परिवर्तनों के बाद अपने प्रोजेक्ट को पुनरारंभ करने का प्रयास किया है, लेकिन कुछ भी नहीं लगता है।

क्या किसी को भी पुष्टि करने योग्य सक्षम के साथ इसे खींचने में कोई सफलता मिली है?

उत्तर

11

आप किस संस्करण का उपयोग कर रहे हैं? मुझे पूरा यकीन है कि यह issue was recently resolved है, इसलिए आपको शायद रेपो से नवीनतम संस्करण की आवश्यकता है जो अभी भी एक रिलीज़ उम्मीदवार है (हालांकि यह जल्द ही बाहर होना चाहिए क्योंकि वे हाल ही में बीटा से बाहर निकलने के लिए omniauth 0.2 की प्रतीक्षा कर रहे थे)।

मैं रेल 3.0.5 के साथ जिथब रेपो से डेविस 1.2.आरसी 2 का उपयोग कर रहा हूं। मैंने आपके कस्टम रजिस्ट्रेशन नियंत्रक को जो कोड बताया है, उसे जोड़ा और उसे नया खाता बनाने के बाद अपेक्षित Google को अग्रेषित किया गया था।

मेरी RegistrationsController का एक cutdown संस्करण (एप्लिकेशन/नियंत्रक/उन में)

class Users::RegistrationsController < Devise::RegistrationsController 
    protected 
     def after_sign_up_path_for(resource) 
     "http://google.com" 
     end 

end 

मेरे routes.rb प्रविष्टि

devise_for :users, :controllers => { :registrations => "users/registrations" } 

मेरी Gemfile से

gem 'devise', :git => "git://github.com/plataformatec/devise.git" 

मुझे जानते हैं अगर आपको तैयार करने के नवीनतम संस्करण में समस्याएं आ रही हैं।

+0

मैं, वसीयत 1.1.8 उपयोग कर रहा था मणि को अद्यतन करने पर विचार नहीं किया था में यह करने के लिए किया जाएगा। वैसे भी, मैंने डेविस को 1.2.1 (साथ ही रेल 3.0.5 और अन्य सभी रत्न) अपडेट किया है, लेकिन यह अभी भी रीडायरेक्ट करने से इनकार कर रहा है, केवल होम पेज पर वापस जाता है और "आपने सफलतापूर्वक साइन अप किया है" का एक संदेश देता है। , हम आपको साइन इन नहीं कर सके क्योंकि आपका खाता पुष्टिकृत है। " (जो मेरे लिए एक नया संदेश है, लेकिन मुझे लगता है कि वे एक डेविस अपडेट में जोड़े गए हैं।) मेरा कोड आपके जैसा दिखता है। लेकिन उपरोक्त 'after_sign_up_path_for' मेरे पास मेरे रजिस्ट्रेशन नियंत्रक में है, क्या यह पर्याप्त है या मुझे अपने नियंत्रक में और अधिक चाहिए? – Shannon

+0

इसके अलावा, मैंने उपरोक्त को मेरे रत्न में फेंक दिया और डेविस 1.3.0.dev को आजमाया, मेरे नियंत्रक के रीडायरेक्ट को भी अनदेखा करता है। – Shannon

+6

रुको, मुझे लगता है कि मुझे मिल गया। मैंने after_inactive_sign_up_path_for के बाद after_sign_up_path_for को बदल दिया, और अब यह Google पर रीडायरेक्ट कर रहा है। तो अंतिम जवाब यह था कि उपरोक्त सुझाव के अनुसार मणि को अद्यतन करने के साथ। बहुत धन्यवाद। – Shannon

14

मैं सिर्फ @ शैनन की टिप्पणी को एक उत्तर में डाल रहा हूं ताकि इसे ढूंढना आसान हो।

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

def after_inactive_sign_up_path_for(resource) 
    "http://example.com" 
end 
1

एक और तरीका है आवेदन नियंत्रक

def after_sign_in_path_for(resource) 
    resource.sign_in_count <= 1 ? '/edit_profile' : root_path 
end 
+0

के रूप में आसान होना चाहिए यह मेरे लिए thaks :) –

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

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