我需要在rails应用程序中自定义确认框。我发现this,将js代码添加到我的application.js中,但似乎$ .rails未定义。
以下是我添加到application.js文件中的代码:
$.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);
});
};
我收到错误“Uncaught TypeError:无法设置未定义的属性'allowAction'”。
你知道什么是错的吗? (jquery_ujs gem已成功安装并加载)
提前谢谢你,
Jercoh
答案 0 :(得分:3)
你需要:
gem 'jquery-rails'
不是jquery_ujs。
答案 1 :(得分:2)
我将此代码放入名为custom.confirm.js的文件中,然后将这两行放入
//= require jquery_ujs
//= require custom.confirm.js
在application.js的底部,它工作,谢谢!
答案 2 :(得分:0)
我遇到了同样的问题,它在Firefox上工作得很好但不是Chrome。我想这是由于Chrome缓存并通过清理与我的开发服务器相关的所有浏览器缓存来修复它,