0

Je supporte un ancien site exécutant Rails 3.2, jquery 1.7, avec un jquery-rails personnalisé (le gemfile dit 0.2.6 - mais il y en a un personnalisé en le dossier public, donc il aurait pu être mis à jour)data-method annule data-confirm sur les anciens jquery-rails

J'ai un lien de suppression (data-method = delete) avec une confirmation (data-confirm = "Etes-vous sûr de vouloir supprimer ceci?"). Cependant, même si je clique sur Annuler dans la case de confirmation, l'élément est supprimé. Je suppose que cela n'a commencé que récemment. Des idées pour lesquelles cela a commencé à se produire et comment y remédier?

Répondre

0

Je réussi à résoudre ce problème en piratant les jquery.rails.js avec les éléments suivants:

/** 
* 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; 
     } 
     ... 

De cette façon, si l'utilisateur clique sur Annuler, il définit des données sur le lien que je peux tester. Puis, au début du gestionnaire méthode de données:

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

Cela semble fonctionner, mais je suis toujours intrigué à ce qui a changé ...