在我的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,但我没有弄清楚如何做到这一点。
答案 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)
在用户可以取消或确认之前发生点击事件。您可以使用表单来捕获提交操作,该操作只会在用户确认后发生,而在用户取消对话框后根本不会发生。