2010-11-24 8 views

Répondre

17

Je vais avoir le même problème, et this post m'a aidé à la figure IT out. Fondamentalement, vous devez attacher un écouteur à l'élément qui réagit aux événements de rappel des rails. Par exemple:

<%= link_to 'Delete', post, 
    :confirm => 'Are you sure?', 
    :method => :delete, 
    :remote=>true, 
    :id=>'delete' %> 

Dans un fichier js séparé (pour le rendre discret), avec jQuery:

$('#delete').bind('ajax:success', function() { 
    // do something 
}); 
+0

Merci morbaq, je l'avais aussi trouvé après avoir googlé. Mais je pensais qu'il pourrait y avoir des chemins de fer. – Pravin

+1

Rails 3 est parti des helpers "inline javascript" comme link_to_remote et se déplace vers JavaScript discret (UJS), que vous devez gérer de cette façon. AFAIK, le code ci-dessus est en fait la «voie des rails» depuis la version 3. –

0

Si vous voulez aussi ajouter écouteur pour l'utilisation de ajax envoyer le code suivant

$(document).ready(function() { 
    $('#topnav-buildings').bind('ajax:beforeSend', function() { 
    blockDiv('#topnav-buildings'); 
    }); 
}); 

J'ai passé une heure pour trouver ces choses t2

  1. nous devons le mettre à l'intérieur document.ready
  2. S est en majuscules lorsque vous écrivez ajax: beforeSend
  3. Ne pas utiliser ajaxSend au lieu de ajax: beforeSend .... beacause il ajoute gestionnaire global pour tous les événements ajax
1

Liaison d'une fonction à ajax: succès comme morbaq suggéré travaillé pour moi.

Cependant, je pense que s'il y a plus d'un comportement ajax associé à l'élément, la fonction s'exécutera pour chacun d'eux.