Почему удаленный: правда и подтвердить: "Вы уверены?" не работать вместе?

Я боролся с 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 ответ

Ниже должно работать

= link_to 'Ajax Button', app_path(resource), method: :delete, remote: true, id: 'ajax_link', data: { disable_with: "Wait..." }, data: { confirm: 'Are you sure?' }
Другие вопросы по тегам