0

Я поддерживаю старый сайт, на котором работает Rails 3.2, jquery 1.7, с настраиваемыми jquery-rails (gemfile говорит, что это 0.2.6 - но есть пользовательский в в общей папке, поэтому она могла быть обновлена)data-method отрицает подтверждение данных на старых jquery-rails

У меня есть ссылка удаления (data-method = delete) с подтверждением (data-confirm = "Вы действительно хотите удалить это?"). Однако, даже если я нажму «отменить» в поле подтверждения, элемент будет удален. Я предполагаю, что это только начало происходить в последнее время. Любые идеи, почему это началось и как это исправить?

ответ

0

Так мне удалось это исправить путем взлома jquery.rails.js следующим:

/** 
* confirmation handler 
*/ 
$('a[data-confirm],input[data-confirm]').live('click', function (event) { 
    var el = $(this); 
    if (el.triggerAndReturn('confirm')) { 
     if (!confirm(el.attr('data-confirm'))) { 
      event.preventDefault(); 
      $(event.currentTarget).data('failed-confirm', true); 
      return false; 
     } 
     ... 

Таким образом, если пользователь нажимает кнопку отмены, он устанавливает данные по ссылке, которую я могу проверить для. Затем, в начале обработчика данных метода:

$('a[data-method]:not([data-remote])').live('click', function (e){ 
     if($(e.currentTarget).data('failed-confirm')) { 
      $(e.currentTarget).data('failed-confirm', false); 
      return false; 
     } 
     ... 

Это похоже на работу, но я все еще заинтригован, что изменилось ...