Почему удаленный: правда и подтвердить: "Вы уверены?" не работать вместе?
Я боролся с 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?' }