2011-10-31 16 views
6

में काम नहीं कर रहा है, जिसे मैंने हाल ही में डेविस 1.2 से 1.4.9 तक अपग्रेड किया है और सब कुछ मेरे पुष्टिकरण मॉड्यूल को छोड़कर काम करता है। ईमेल काम करता है साथ ही पूरी प्रक्रिया। लेकिन पुष्टि पृष्ठ हमेशा खाली है। यह काम करता है और यह ईमेल खाता की पुष्टि करता है, लेकिन यह उपयोगकर्ता को रीडायरेक्ट नहीं करता है और 406 त्रुटि फेंकता है। यह झूठी पुष्टि प्रयासों के लिए भी वही है।नया संस्करण

मार्ग ठीक काम करने लगते हैं, मेरे पास मेरे उपयोगकर्ता मॉडल में पुष्टि योग्य है, और कुछ और नहीं बदला है।

कोई विचार? क्या मुझे कुछ सेटिंग्स या कुछ याद आ रहा है जो मुझे 1.4.9 के लिए अपडेट करने की ज़रूरत है?

अद्यतन

यह URL उत्पन्न की जा रही के साथ एक समस्या हो रहा है। किसी अज्ञात कारण के लिए यह उपयोगकर्ता नाम के साथ पुष्टिकरण यूआरएल तैयार कर रहा है? और यह इसे तोड़ने का कारण बन रहा है। लेकिन मुझे अभी भी यकीन नहीं है कि इसे कैसे ठीक किया जाए।

http://localhost:5000/users/confirmation.someusername?confirmation_token=R7apAPhC5c3rszvhsowp

URL में उपयोगकर्ता नाम उपरोक्त प्रक्रिया कार्य के लिए नहीं होती है।

मैंने 1.2 (जो काम करता है) और नए संस्करण में नियंत्रक के बीच अंतर की जांच की।

1,2

# GET /resource/confirmation?confirmation_token=abcdef 
    def show 
    self.resource = resource_class.confirm_by_token(params[:confirmation_token]) 

    if resource.errors.empty? 
     set_flash_message :notice, :confirmed 
     sign_in_and_redirect(resource_name, resource) 
    else 
     render_with_scope :new 
    end 
    end 

1.4.9

# GET /resource/confirmation?confirmation_token=abcdef 
    def show 
    self.resource = resource_class.confirm_by_token(params[:confirmation_token]) 

    if resource.errors.empty? 
     set_flash_message(:notice, :confirmed) if is_navigational_format? 
     sign_in(resource_name, resource) 
     respond_with_navigational(resource){ redirect_to after_confirmation_path_for(resource_name, resource) } 
    else 
     respond_with_navigational(resource.errors, :status => :unprocessable_entity){ render_with_scope :new } 
    end 
    end 

    protected 

    # The path used after resending confirmation instructions. 
    def after_resending_confirmation_instructions_path_for(resource_name) 
     new_session_path(resource_name) 
    end 

    # The path used after confirmation. 
    def after_confirmation_path_for(resource_name, resource) 
     after_sign_in_path_for(resource) 
    end 

त्रुटि

Started GET "https://stackoverflow.com/users/confirmation.sdfsdfsd?confirmation_token=vmxmx73xvM7sUfcvH9CX" for 127.0.0.1 at 2011-10-31 13:30:33 +0100 
    Processing by Devise::ConfirmationsController#show as 
    Parameters: {"confirmation_token"=>"vmxmx73xvM7sUfcvH9CX"} 
    SQL (1.1ms) SELECT a.attname, format_type(a.atttypid, a.atttypmod), d.adsrc, a.attnotnull 
FROM pg_attribute a LEFT JOIN pg_attrdef d 
ON a.attrelid = d.adrelid AND a.attnum = d.adnum 
WHERE a.attrelid = '"users"'::regclass 
AND a.attnum > 0 AND NOT a.attisdropped 
ORDER BY a.attnum 

    User Load (1.2ms) SELECT "users".* FROM "users" WHERE "users"."confirmation_token" = 'vmxmx73xvM7sUfcvH9CX' LIMIT 1 
    SQL (0.7ms) SELECT a.attname, format_type(a.atttypid, a.atttypmod), d.adsrc, a.attnotnull 
FROM pg_attribute a LEFT JOIN pg_attrdef d 
ON a.attrelid = d.adrelid AND a.attnum = d.adnum 
WHERE a.attrelid = '"users"'::regclass 
AND a.attnum > 0 AND NOT a.attisdropped 
ORDER BY a.attnum 

Completed 406 Not Acceptable in 28ms 
+0

यह स्पष्ट है कि यूआरएल 406 /users/confirmation.someusername? ... ".someusername" (डॉट शामिल है) को प्रतिक्रिया के प्रारूप के रूप में माना जाएगा जिसे आप वापस चाहते हैं। तो हो सकता है कि यदि आप अपने रूट.आरबी फ़ाइल में प्रीपेन्ड रूट नियम का प्रयास करते हैं तो यह 'get /users/confirmation.:username "को ठीक कर सकता है, नियंत्रक =>: उपयोगकर्ता,: action => पुष्टि ...' –

उत्तर

5

देखो और देखें कि आप की नकल की विचारों वसीयत है, वे पुराने हो चुके हो सकता है।

मैं एक ऐसी ही issue मेरा url में अजीब उपयोगकर्ता आईडी हो रही थी, वसीयत नहीं रह गया है confirmation_url के पक्ष में user_confirmation_url का उपयोग करता है (1.0 के रूप में ?, लेकिन यह अभी भी थोड़ा अधिक समय काम किया) तो आप या तो अपने कस्टम दृश्य वसीयत हटा सकते हैं या यूआरएल सहायक अद्यतन करें।

7

किसी और सही दिशा में मुझे इशारा किया, लेकिन यहाँ मेरी सटीक समाधान है। समस्या डिवीज व्यू टेम्पलेट्स में थी जिसे मैंने 1.2 से अधिक कॉपी किया था? ऐसा लगता है कि उन्होंने लिंक हेल्पर को user_confirmation_url() से simply confirmation_url() में बदल दिया है।

वर्ष पुष्टिकरण ईमेल

<p>Welcome <%= @resource.email %>!</p> 

<p>You can confirm your account through the link below:</p> 

<p><%= link_to 'Confirm my account', user_confirmation_url(@resource, :confirmation_token => @resource.confirmation_token) %></p> 

नया पुष्टि टेम्पलेट

<p>Welcome <%= @resource.email %>!</p> 

<p>You can confirm your account through the link below:</p> 

<p><%= link_to 'Confirm my account', confirmation_url(@resource, :confirmation_token => @resource.confirmation_token) %></p> 
1

नवीनतम वसीयत कोड

<p><%= link_to 'Confirm my account', model_confirmation_url(:confirmation_token => @model.confirmation_token) %></p> 

संस्करण
वसीयत-2.1.2

0

मेरे मामले के लिए है, मैं दृश्य के अंतर्गत कस्टम दृश्य था/जैसे वसीयत users_confirmation_url का उपयोग करके विचार/devise/confirmations/new.html.erb। मुझे उन दृश्यों/उपयोगकर्ताओं के तहत स्थानांतरित करने के बाद और पुष्टि पुष्टिकरण_यूआरएल के बाद मुझे और त्रुटियां नहीं मिलतीं।

0

मेरे मामले के लिए (रेल 4.2 और 3.4 तैयार करें।करने के लिए सिर्फ 1)

(एप्लिकेशन/विचारों/वसीयत/मेलर/confirmation_instructions.html.erb में उत्पन्न दृश्य फिक्सिंग) की आवश्यकता user_confirmation_url में @resource को हटाने:

@token)%>

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