2011-03-28 14 views
8

के साथ तैयार करें मुझे AJAX लॉगिन के साथ उपयोग करने में समस्या है। मैं :remote => true विकल्प और जावास्क्रिप्ट हेल्पर्स का jQuery संस्करण (https://github.com/rails/jquery-ujs) का उपयोग कर रहा हूं। उपयोगकर्ता जब सही सूचनाओं में प्रवेश करता है, तो सत्र व्यू के अंदर मेरा create.js.erb प्रस्तुत किया जाता है। यह ठीक है, क्योंकि मैं इस फ़ाइल में जेएस का उपयोग कर अपने उपयोगकर्ता को रीडायरेक्ट कर सकता हूं। लेकिन जब कोई त्रुटि होती है, उदा। उपयोगकर्ता झूठी सूचना में प्रवेश करता है, केवल फ्लैश संदेश त्रुटि कोड 401 - Unauthorized के साथ प्रतिक्रिया में हैं। तो, कोई दृश्य या create.js.erb या sth अन्य प्रस्तुत किया जाता है। लेकिन मैं इसे इस संदेश को साइड पर प्रदर्शित करके संभालना चाहता हूं, ताकि उपयोगकर्ताओं को कुछ फीडबैक मिल जाए, क्या गलत है।रेल 3 और रिमोट => सत्य

मैंने respond_to :js के साथ अपने स्वयं के कस्टम नियंत्रक को लागू करने की कोशिश की, और वार्डन प्रमाणीकरण की :recall विधि के साथ खेलना शुरू किया। लेकिन यह काम नहीं करता है।

क्या कोई इस समस्या को हल करने के लिए कुछ सर्वोत्तम प्रथाओं को जानता है? या क्या मुझे इस सहायक तरीके से बचना चाहिए और AJAX कॉल के लिए केवल शुद्ध jQuery का उपयोग करना चाहिए? रेल 3. में: "त्रुटि ajax" बस अपने फार्म के लिए घटना के लिए बाध्य

THX, टक्स

उत्तर

9

आप jQuery घटना इस्तेमाल कर सकते हैं।

jQuery(function($) { 
    $("#new_model").bind("ajax:error", function(event, data, status, xhr) { 
    alert("something went wrong"); 
    }); 
}); 

अधिक जानकारी के क्या पर घटनाओं के लिए उपलब्ध हैं इस blog post पर एक नजर डालें।

+0

आपके उत्तर के लिए धन्यवाद। यह मेरे लिए काम करता है, लेकिन मुझे AJAX को प्रतिस्थापित करना है: AJAX के साथ विफलता: त्रुटि – 23tux

+0

मैंने अपना जवाब अपडेट किया है अन्य लोगों को टिप्पणियां नहीं पढ़ती हैं। –

1

यहाँ मेरी संस्करण

<script> 
    $(document).ajaxError(function(e, XHR, options){ 
    if (XHR.status == 401){ 
     window.location.replace("<%= new_user_session_path %>"); 
    } 
    }); 
</script> 

यह स्वचालित रूप से लॉगिन पृष्ठ पर रीडायरेक्ट और पृष्ठ पर सभी तत्वों के लिए काम करता है।

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