2012-11-13 9 views
5

को ओवरराइड नहीं कर सकता है मुझे अपने रेल एप्लिकेशन में पुष्टि बॉक्स को कस्टमाइज़ करने की आवश्यकता है। मुझे this मिला, जेएस कोड को मेरे application.js में जोड़ा लेकिन ऐसा लगता है कि $ .rails अपरिभाषित है।

$.rails.allowAction = function(link) { 
    if (!link.attr('data-confirm')) { 
    return true; 
    } 
    $.rails.showConfirmDialog(link); 
    return false; 
}; 

$.rails.confirmed = function(link) { 
    link.removeAttr('data-confirm'); 
    return link.trigger('click.rails'); 
}; 

$.rails.showConfirmDialog = function(link) { 
    var html, message; 
    message = link.attr('data-confirm'); 
    html = "<div class=\"modal\" id=\"confirmationDialog\">\n <div class=\"modal-header\">\n <a class=\"close\" data-dismiss=\"modal\">Ã</a>\n <h3>Are you sure Mr. President?</h3>\n </div>\n <div class=\"modal-body\">\n <p>" + message + "</p>\n </div>\n <div class=\"modal-footer\">\n <a data-dismiss=\"modal\" class=\"btn\">Cancel</a>\n <a data-dismiss=\"modal\" class=\"btn btn-primary confirm\">OK</a>\n </div>\n</div>"; 
    $(html).modal(); 
    return $('#confirmationDialog .confirm').on('click', function() { 
    return $.rails.confirmed(link); 
    }); 
}; 

मैं एक त्रुटि मिली:

यहाँ कोड मैं application.js फ़ाइल को जोड़ा गया है "Uncaught TypeError: गुण सेट नहीं किया जा सकता अपरिभाषित की 'allowAction'"।

क्या आप जानते हैं कि क्या गलत है? (Jquery_ujs मणि स्थापित किया गया है और सफलतापूर्वक लोड)

अग्रिम धन्यवाद,

Jercoh

उत्तर

3

आप की जरूरत है:

gem 'jquery-rails' 

नहीं jquery_ujs।

+0

jquery-rails पहले से स्थापित है। – Jercoh

+1

चूंकि आपने कहा था कि आपने इसे application.js में रखा है, शायद आप संपत्ति पाइपलाइन का उपयोग नहीं कर रहे हैं, इसलिए मैं स्क्रिप्ट लोड करने का ऑर्डर जांचूंगा। यह सामान नीचे होना चाहिए। –

2

मैं custom.confirm.js नामक एक फाइल में इस कोड को रखा और फिर application.js के निचले भाग में उन दो पंक्तियों

//= require jquery_ujs 
//= require custom.confirm.js 

रखा, और यह काम किया, धन्यवाद!

0

मुझे बस एक ही समस्या थी, यह फ़ायरफ़ॉक्स पर ठीक काम करता था लेकिन क्रोम नहीं। मुझे लगता है कि यह क्रोम कैश के कारण था और मेरे विकास सर्वर से संबंधित सभी ब्राउज़र कैश की सफाई करके इसे ठीक किया गया,