Alertify警报确认对话框不适用于Ruby on Rails

时间:2018-01-21 05:29:33

标签: javascript ruby-on-rails ruby

这是alertifyJS,我需要使用rails实现这一点。

我已下载此JS和CSS文件并加入assets/javascripts/modules/alertify.js assets/stylsheets/modules/alertify.css

assets/javascripts/application.js

//= require jquery
//= require jquery_ujs
//= require modules/alertify

assets/stylsheets/application.css

 *= require modules/alertify

查看

<%= link_to "Go!", new_employer_session_path, data: {confirm: "Are you sure? "} %>

但确认对话框不起作用。

我现在能做什么。

由于

2 个答案:

答案 0 :(得分:1)

如果JSCSS正常工作

,请尝试以下操作

您需要声明方法需要采取的操作方法,如下所示

我认为这是一种GET方法,然后看到这一点,您可以更改为您的方法

<%= link_to "Go!", new_employer_session_path, method: :get, data: {confirm: "Are you sure? "} %>
#=> declare a method :get, :post or :delete

如果没有宣布一种方法,它就不会起作用

并在您的JS文件JS

中添加一些application.js代码
$.rails.allowAction = function(element){
    if( undefined === element.attr('data-confirm') ){
        return true;
    }

    $.rails.showConfirmDialog(element);
    return false;
};

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

$.rails.showConfirmDialog = function(element){
    var msg = element.data('confirm');
    alertify.confirm(msg, function(e){
        if(e){
            $.rails.confirmed(element);
            return true;
        }
    })
};

希望有所帮助

答案 1 :(得分:0)

这是您需要做的步骤:

1)将此添加到gem文件:

gem 'alertifyjs-rails'

2)将此添加到/app/assets/javascripts/application.js

//= require alertify

3)将此添加到/app/assets/stylesheets/application.css

 *= require alertify
 *= require alertify/default
 *= require alertify/bootstrap

4)将其添加到/app/assets/javascripts/application.js的末尾 必须使Alertify与现有代码一起使用。

$.rails.allowAction = function(element){
    if( undefined === element.attr('data-confirm') ){
        return true;
    }

    $.rails.showConfirmDialog(element);
    return false;
};

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

$.rails.showConfirmDialog = function(element){
    var company_name = "Your Company Name Security Confirmation";
    var msg = element.data('confirm');

    alertify.confirm(msg, function(e){
        if(e){
            $.rails.confirmed(element);
            return true;
        }
    }).set({title: company_name}).set('onfocus', function(){
        document.activeElement.blur();
    });

};
  

最后一个(.set('onfocus',...)   对话框中的任何按钮。这样看起来更漂亮,但是你   如果您不喜欢它,则无需使用它。

5)转到项目的根目录并在终端中运行: 捆绑包

6)在运行服务器的情况下转到终端,并通过以下方式停止服务器:CTRL + C

7)使用以下命令再次运行服务器: Rails服务器

8)在Web浏览器中刷新页面。它应该可以与您已经存在的代码一起使用。

希望有帮助!