rails和javascript,知道用户是否已确认对话框

时间:2014-07-30 13:51:30

标签: javascript ruby-on-rails unobtrusive-javascript

在我的rails 3.2.17应用程序中,我有一个删除按钮:

<%= link_to 'Delete', destroy_item_path(@item), 
    method: :delete, 
    data: { confirm: "Do you confirm?"},
    id: "a_delete" 
%>

我需要在项目删除后执行一些javascript代码,或者更好:在用户确认删除项目后。 天真的,我在锚点上添加了一个id,并绑定了一个点击监听器:

$("#a_delete").click(function() {
    //Has the user confirmed or canceled the operation?
} );

但我怎么知道用户的选择是什么?我已经检查了https://github.com/rails/prototype-ujs,但我没有弄清楚如何做到这一点。

3 个答案:

答案 0 :(得分:1)

简单的方法(在项目被破坏之后)它是一个发送请求作为JS,rails将呈现destroy.js.erb,你可以在这里添加代码。艰难的方式(在销毁之前确认之后)它是一个修改轨道确认对话框http://lesseverything.com/blog/archives/2012/07/18/customizing-confirmation-dialog-in-rails/

答案 1 :(得分:1)

您可以在点击处理程序中自行显示对话框并进行相应的响应,而不是让rails.js处理显示对话框:

$('#a_delete').click(function(e) {
    if(confirm('Do you confirm?') {
        alert('going to delete!');
    } else {
        e.preventDefault();
        alert('not going to delete!');
    }
} );

这将允许您在将删除请求发送到服务器之前进行处理。

答案 2 :(得分:0)

在用户可以取消或确认之前发生点击事件。您可以使用表单来捕获提交操作,该操作只会在用户确认后发生,而在用户取消对话框后根本不会发生。