पर सत्र पुनः लोड नहीं कर रहा है मुझे jQuery का उपयोग करके रेल और अजाक्स के साथ एक बहुत ही अजीब समस्या का सामना करना पड़ रहा है (हालांकि मुझे नहीं लगता कि यह jQuery के लिए विशिष्ट है)।रेल अजेक्स पोस्ट
मेरा रेल एप्लिकेशन कुकी सत्र स्टोर का उपयोग करता है, और मेरे पास एक बहुत ही सरल लॉगिन है जो सत्र में उपयोगकर्ता आईडी सेट करता है। यदि user_id सत्र में सेट नहीं है, तो यह लॉगिन पृष्ठ पर रीडायरेक्ट करता है। यह कोई समस्या नहीं के साथ काम करता है। JQuery GET अनुरोध भी ठीक काम करते हैं। समस्या तब होती है जब मैं एक jQuery पोस्ट करता हूं - ब्राउज़र सत्र कुकी को ठीक भेजता है (मैंने फ़ायरबग के साथ इसकी पुष्टि की और लॉग को request.cookies डंप किया) लेकिन सत्र खाली है, यानी सत्र {} है।
मैं अपने application.js में यह कर रहा हूँ:
$.post('/test/1', { _method: 'delete' }, null, 'json');
जो इस नियंत्रक विधि करने के लिए मिलना चाहिए (_method: हटाना):
$(document).ajaxSend(function(e, xhr, options) {
var token = $("meta[name='csrf-token']").attr('content');
xhr.setRequestHeader('X-CSRF-Token', token);
});
और यहाँ मेरे नमूना पोस्ट है
def destroy
respond_to do |format|
format.json { render :json => { :destroyed => 'ok' }.to_json }
end
end
लॉग को देखकर और फायरबग का उपयोग करके मैं पुष्टि कर सकता हूं कि सही कुकी मूल्य अनुरोध में भेजा गया है जब एजेक्स पोस्ट होता है तो ader, लेकिन ऐसा लगता है कि कुछ बिंदुओं पर रेल इस मान को खो देता है और इसलिए सत्र खो देता है, इसलिए यह लॉगिन पेज पर रीडायरेक्ट करता है और कभी भी विधि पर नहीं जाता है।
मैंने यह सब कुछ करने की कोशिश की है जिसे मैं डीबग करने के बारे में सोच सकता हूं लेकिन मैं इस विचार के आसपास आ रहा हूं कि यह रेल में एक बग हो सकता है। मैं रेल 3.0.4 और jQuery 1.5 का उपयोग कर रहा हूं अगर यह मदद करता है। मुझे यह बहुत अजीब लगता है कि नियमित (यानी गैर-अजाक्स) अनुरोधों को प्राप्त करते हैं और पोस्ट करते हैं, और AJAX को कोई समस्या नहीं होने पर अनुरोध मिलते हैं, यह केवल अजाक्स पोस्ट नहीं है जो नहीं करते हैं।
इसे ठीक करने की कोशिश करने में कोई भी मदद की सराहना की जाएगी!
बहुत धन्यवाद,
डेव
यह टैग 'csrf_meta_tags' से अधिक हो गया है – ChrisW