我正在尝试使用sweet-alert覆盖Rails默认确认对话框。下面是源JavaScript文件,但我遇到了一个我似乎无法弄清楚的错误。
它返回以下错误:
Uncaught TypeError: Cannot read property 'handleMethod' of undefined
我认为$linkToVerify
未定义,但我不确定如何解决这个问题。有人可以帮忙吗?
(function( $ ) {
var sweetAlertConfirm = function(event) {
swalDefaultOptions = {
title: 'Are you sure?',
type: 'warning',
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: "Ok"
}
//this.click(function(event) {
$linkToVerify = $(this)
var swalOptions = swalDefaultOptions;
var optionKeys = [
'confirm',
'text',
'type',
'showCancelButton',
'confirmButtonColor',
'cancelButtonColor',
'confirmButtonText',
'cancelButtonText',
'closeOnConfirm',
'imageUrl',
'allowOutsideClick',
'remote',
'method'
]
$.each($linkToVerify.data(), function(key, val) {
if ($.inArray(key, optionKeys) >= 0) {
swalOptions[key] = val
}
})
message = $linkToVerify.attr('data-sweet-alert-confirm')
swalOptions['title'] = message
swal(swalOptions, function(r) {
if (swalOptions['remote'] === true) {
$.rails.handleRemote($linkToVerify)
}
else if(swalOptions[ 'method' ] !== undefined) {
$.rails.handleMethod($linkToVerify)
}
else {
//[FIXME]Check this im not sure about this
window.location.href = $linkToVerify.attr('href');
}
});
return false;
//});
//return this;
}
$(document).ready(function() {
//$("a[data-sweet-alert-confirm]").sweetAlertConfirm();
$('a[data-sweet-alert-confirm]').on('click', sweetAlertConfirm)
});
})( jQuery );
答案 0 :(得分:0)
如果您在控制台上运行undefined
时收到$.rails
,则表示jquery_ujs
未加载,您//= require jquery_ujs
上是否有application.js
文件?此文件是否也加载到您的布局上?
答案 1 :(得分:0)
//= require jquery_ujs
包含在我的application.js文件中,但在页面上,但由于某种原因它无法正常工作。所以我从github下载了jquery_ujs.js的副本,并将其加载到我的全局目录中。这似乎解决了未定义错误的问题。
谢谢你们!
答案 2 :(得分:0)
在jquery_ujs
之前要求rails-ujs
向我提出伎俩。
//= require jquery
//= require jquery_ujs
//= require rails-ujs