为什么遥控:真实并确认:'你确定吗?'不一起工作?

时间:2014-08-16 03:01:27

标签: ruby-on-rails-4 ujs

我一直在和Rails 4和UJS搏斗,并注意到Rails 4.1并不像我期望的那样表现(具体来说就是rails-ujs)。

当使用带有确认对话框的远程链接时,UJS驱动程序会在确认弹出窗口被批准之前发送XHR(使确认弹出窗口毫无意义)。我本来希望Rails能够处理这些选项的组合,但我必须编写自己的javascript来执行确认弹出并挂钩到" ajax:beforeSend"事件,以防止请求过早发射。

这里有我没有用的东西(请求立即被激活,没有等待确认对话框返回true):

= link_to 'Ajax Button', app_path(resource), method: :delete, 
    remote: true, id: 'ajax_link', disable_with: 'Wait...',
    confirm: 'Are you sure?'

这是我现在所做的工作:

= link_to 'Ajax Button', app_path(resource), method: :delete,
    remote: true, id: 'ajax_link', disable_with: 'Wait...'

$ ->
  $("a[data-remote]#ajax_link").on 'ajax:beforeSend', (xhr, settings) ->
    return confirm("Are you sure?")

只是我或者不应该使用rails / jquery-ujs处理上述选项组合并等待确认弹出窗口?在过去,Rails 3和之前,远程链接/按钮通常"刚刚工作"当谈到AJAX和远程请求时,Rails 4似乎使用AJAX需要更多的技巧,这是以前需要的。

还有其他人在使用Rails 4.1时遇到过这种情况吗?还有其他解决方案吗?

1 个答案:

答案 0 :(得分:7)

以下应该有效

= link_to 'Ajax Button', app_path(resource), method: :delete, remote: true, id: 'ajax_link', data: { disable_with: "Wait..." }, data: { confirm: 'Are you sure?' }