Rails UJS确认框取消按钮回调

时间:2013-10-22 11:31:03

标签: jquery ruby-on-rails ujs

我正在使用Rails jquery ujs来处理我的应用中的ajax。此外,我使用confirm选项来销毁任何记录。 作为我当前的设置,我点击了data-remote=true链接即连接加载覆盖屏幕。

我想知道的是:当用户在确认框中单击cancel并且我可以关闭加载器覆盖时,我是否可以挂钩回调事件。

2 个答案:

答案 0 :(得分:6)

是的,你可以。传入响应对象。在CoffeeScript中。

  $('selector').on 'confirm:complete', (e, response) ->
    if response
      # User confirmed
    else
      # User cancelled.

在Javascript中:

  $('selector').on('confirm:complete', function(e, response) {
    if(response) {
      // User confirmed
    }
    else {
      // User cancelled.
    }
  });

答案 1 :(得分:2)

对于那些迷惑于此问题并使用Rails> = 5.1的用户,请注意,回调参数已捆绑到event.detail中,后者是一个数组。第一个回调参数是event.detail[0],依此类推。

要更新Mohamad的答案,以下是在Rails> = 5.1中检查确认值的方法。

$('selector').on('confirm:complete', function(e) {
  if (e.detail[0]) {
    // User confirmed
  }
  else {
    // User cancelled.
  }
});

From Rails Guide

  

Rails 5.1引入了rails-ujs,并删除了jQuery作为依赖项。 [...]与jQuery版本不同,所有自定义事件仅返回一个参数:event。此参数中有一个附加的属性详细信息,其中包含一组附加参数。