2012-11-13 109 views
5

我需要在我的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); 
    }); 
}; 

我得到一个错误“遗漏的类型错误:无法设置属性未定义‘allowAction’”。

你知道怎么回事吗? (jquery_ujs创业板已安装并成功加载)

谢谢你在前进,

Jercoh

回答

3

您需要:

gem 'jquery-rails' 

不是jquery_ujs。

+0

jquery-rails已经安装。 – Jercoh

+1

既然你说过你把它放在application.js中,你可能没有使用资产管道,所以我会检查加载脚本的顺序。这些东西应该在底部。 –

2

我把这个代码放到一个名为custom.confirm.js,然后把这两行

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

在application.js中的底部,和它的工作,谢谢!

0

我刚刚遇到同样的问题,它在Firefox上运行良好,但不是Chrome。我想这是由于Chrome缓存,并通过清理与我的开发服务器相关的所有浏览器缓存来修复它,