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