Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
rails和javascript,知道用户是否确认了一个对话框_Javascript_Ruby On Rails_Unobtrusive Javascript - Fatal编程技术网

rails和javascript,知道用户是否确认了一个对话框

rails和javascript,知道用户是否确认了一个对话框,javascript,ruby-on-rails,unobtrusive-javascript,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" %> 但是我怎么知道用户的选择呢?我已经检查了,但我没有弄清楚如何以及是否可以做到这一点。简易方法(物品销毁后)这是一个JS发送请求,rails将呈现destr

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

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

但是我怎么知道用户的选择呢?我已经检查了,但我没有弄清楚如何以及是否可以做到这一点。

简易方法(物品销毁后)这是一个JS发送请求,rails将呈现destroy.JS.erb,您可以在这里添加代码。硬方法(销毁前确认后)这是一个修改rails确认对话框

而不是让rails.js句柄显示对话框,您可以在单击处理程序中显示对话框并相应地响应:

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

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

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

ok这当然是一个可行的解决方案。我不喜欢的事实是,开始使用“框架”,然后退回到某种“幼稚的解决方案”,因为farmeworks不满足基本要求或无法记录这些要求。您希望还是仅限于使用rails原型ujs?如果不是,jqueyr ujs看起来会触发一个事件“确认:完成”,它会发送响应:每次发现问题时,我都有点不愿意切换库,因为这不是一种可复制的工作方式。。。如果新库有bug怎么办?我担心最终每个项目都会有一个不同的库。从我的角度来看,rails jquery ujs是两个项目中比较流行和维护的,如果出现问题,这个项目更有可能得到及时的修复。
$('#a_delete').click(function(e) {
    if(confirm('Do you confirm?') {
        alert('going to delete!');
    } else {
        e.preventDefault();
        alert('not going to delete!');
    }
} );