2012-11-13 35 views
5

Tôi cần tùy chỉnh các hộp xác nhận trong ứng dụng đường ray của mình. Tôi tìm thấy this, thêm mã js vào ứng dụng của tôi.js nhưng có vẻ như $ .rails là không xác định.

Đây là mã tôi thêm vào application.js file:

$.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); 
    }); 
}; 

tôi nhận được một thông báo lỗi "lỗi chưa gặp: Không thể thiết lập thuộc tính 'allowAction' không xác định".

Bạn có biết điều gì không ổn? (Jquery_ujs đá quý được cài đặt và nạp thành công)

Cảm ơn bạn trước,

Jercoh

Trả lời

3

Bạn cần:

gem 'jquery-rails' 

không phải là jquery_ujs.

+0

jquery-rails đã được cài đặt. – Jercoh

+1

Vì bạn đã nói rằng bạn đặt điều này trong application.js, có lẽ bạn không sử dụng đường dẫn nội dung, vì vậy tôi sẽ kiểm tra thứ tự tải tập lệnh. Công cụ này phải ở dưới cùng. –

2

Tôi đặt mã này vào một tập tin gọi custom.confirm.js và sau đó đặt những hai dòng

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

ở dưới cùng của application.js, và nó làm việc, cảm ơn!

0

Tôi vừa gặp sự cố tương tự, nó hoạt động tốt trên Firefox chứ không phải Chrome. Tôi đoán đó là do bộ nhớ cache của Chrome và đã khắc phục bộ nhớ cache bằng cách xóa tất cả bộ nhớ cache của trình duyệt liên quan đến máy chủ phát triển của tôi,

Các vấn đề liên quan