Lier une requête ajax à un élément spécifique Rails 3.1

J’ai une liste d’utilisateurs qui ont chacun un bouton “suivre” à côté de leur nom. La demande “suivez” est complétée via ajax et le bouton suivre devient alors un bouton “ne plus suivre”.

Mon code fonctionne bien avec un utilisateur répertorié (et fonctionne également avec plusieurs utilisateurs répertoriés), mais ce que je voudrais, c’est répertorier plusieurs utilisateurs, puis lier en quelque sorte la demande suivante à l’élément spécifique, “.follow_form”, dont chaque bouton est contenu dans, de sorte que seul le bouton “suivre” d’un enfant sur lequel vous cliquez est remplacé par le bouton “ne plus suivre”.

Le code jQuery que j’ai du mal à vous lier est le suivant:

/create.js.erb $(".follow_form").html("") 

et

  /destroy.js.erb $(".follow_form").html("") 

Lorsque le formulaire est soumis, tous les éléments .follow_form sont évidemment modifiés, mais je ne peux pas déterminer comment lier le bon élément.

Un des morceaux de code que j’ai essayés (pour create.js.erb) était:

  $("input.follow").bind( function() { $(this).closest(".follow_form").html("") }); 

Mais pas de réponse ???

Vous devriez probablement le faire dans un callback ajax:success puisqu’il est automatiquement lié à l’object.

Vous pouvez supprimer ces fichiers .js.erb et les restituer dans le contrôleur:

 def create # creation code here # now render the response render :json => { :new_button => render_to_ssortingng( :partial => 'users/unfollow' ) }, :status => :created end def destroy # deletion code here # now render the response render :json => { :new_button => render_to_ssortingng( :partial => 'users/follow' ) }, :status => :no_content end 

Puis dans votre fichier javascript:

 $('input.follow, input.unfollow').live('ajax:success', function(data, json, response) { $(this).closest(".follow_form").html(json.new_button); }); $('input.follow, input.unfollow').live('ajax:error', function(data, xhr, response) { // handle the ajax error here });