2011-06-20 13 views
6

ट्रिगर नहीं कर कॉलबैक मैं ajax को गति प्रदान करने के लिए प्रयास कर रहा हूँ: एक दूरस्थ लिंक के लिए सफलता कॉलबैक। मैं रेल 3.0.8 और jquery-rails 1.0.11 पर हूं। मैं जावास्क्रिप्ट स्थापित करने के लिए jquery जेनरेटर भाग गया। Jquery और jquery_ujs दोनों को मेरे डिफ़ॉल्ट में शामिल किया गया है और मैं सत्यापित कर सकता हूं कि उन्हें पृष्ठ पर शामिल किया जा रहा है।रेल jQuery UJS

jQuery(function($) { 
    $("#deactivate") 
    .bind("ajax:success", function() { 
     alert("HELLO"); 
    }) 
    .bind("ajax:error", function() { 
     alert("GOODBYE"); 
    } 
); 
}); 

लिंक:

= link_to 'Deactivate', activate_patient_path(patient), :id => 'deactivate', :class => "button button-red", :remote => true 

सक्रिय कार्रवाई:

def activate 
    patient = Patient.find(params[:id]) 
    patient.do_not_call = !patient.do_not_call 
    if patient.save 
     render :nothing => true 
    else 
     render :status => 500, :nothing => true 
    end 
end 

ajax कॉल काम करने ठीक लग रहा है

यहाँ मेरी जावास्क्रिप्ट है। कार्रवाई ट्रिगर की गई है और मैं डेटाबेस में परिवर्तन देख सकता हूं। हालांकि, AJAX कॉलबैक ट्रिगर नहीं किया जा रहा है। मैं उनमें से कोई भी काम करने के लिए नहीं मिल सकता है। मैं पूरी तरह से काम करने के लिए, क्लिक जैसी अन्य घटनाएं प्राप्त कर सकता हूं।

अगर मैं Firebug में rails_ujs डिबग मुझे लगता है कि निम्नलिखित कोड रेल ajax ब्लॉक से भाग गया हो जाता है:

success: function(data, status, xhr) { 
    element.trigger('ajax:success', [data, status, xhr]); 
} 

मैं स्टंप्डया हूँ। कोई विचार?

+1

अगर मैं निष्पादित तत्व = $ ("# को सक्रिय"); element.trigger ('ajax: सफलता'); कंसोल में मैं कॉलबैक गति प्रदान करने के मिल सकता है। किसी कारण से यह यूजेएस के साथ काम नहीं करता है। – anthonator

+0

फ़ायरबग का उपयोग करना, अगर मैं element.trigger ('AJAX: सफलता', [डेटा, स्थिति, xhr]) में rails_ujs में एक ब्रेकपॉइंट डालता हूं और फिर AJAX में $ ("# निष्क्रिय करें") को बांधता हूं: कॉलबैक बंद होने पर सफलता ट्रिगर करेगा। कॉलबैक सही ढंग से ट्रिगर करना जारी रखेगा जब तक कि मैं पृष्ठ को रीफ्रेश नहीं करता तब तक लिंक पर क्लिक करता हूं। ऐसा लगता है कि $ ("# निष्क्रिय") तत्व के समान संदर्भ नहीं है जिस पर ट्रिगर निष्पादित किया जा रहा है। – anthonator

उत्तर

12

सुनिश्चित करें कि आप rails.js के बाद jquery.js को फिर से शामिल नहीं कर रहे हैं ... मैं एक समान समस्या में भाग गया जहां jquery.js को दो बार शामिल किया गया था, और rails.js को बीच में शामिल किया गया था।

+1

वह था। jQuery उपकरण jQuery के पुराने संस्करण को एम्बेड कर रहा था। – anthonator