2009-07-25 6 views
2

J'utilise actuellement link_to_remote dans mon application Ruby on Rails pour rendre le contenu distant en utilisant Prototype. Malheureusement, si vous cliquez sur le lien créé plus d'une fois, il rend le contenu.Make link_to_remote Clickable Only Once

Ce que je voudrais faire est en quelque sorte désactiver le lien après avoir cliqué sur le premier.

C'est le code que je suis actuellement en utilisant,

<%= link_to_remote (
     "#{user.name}", 
     :update => "#{user.id}_div", 
     :url => { :controller => "wishlist_items", :action => "load", :id => user.id }, 
     :position => "after", 
     :html => {:class => "#{user.id}_href"}) 
    %> 

Je ne sais que vous pouvez utiliser :success et :complete appeler JavaScript, mais je ne suis pas sûr comment faire cela.

Toute aide serait grandement appréciée. Merci.

Répondre

1

Il existe plusieurs façons de procéder, selon la manière dont vous souhaitez que cela fonctionne. Si vous souhaitez que le bouton désactivé après un seul clic, vous pouvez probablement utiliser une des callbacks énumérés dans les PrototypeHelper docs:

Les callbacks qui peuvent être spécifiés sont (dans l'ordre):

  • : chargement : Appelée lorsque le document distant est chargé avec des données par le navigateur.

  • : chargé: Appelé lorsque le navigateur a terminé de charger le document distant. : Interactif: Appelé lorsque l'utilisateur peut interagir avec le document distant, même si n'a pas terminé le chargement. : Success: Appelé lorsque XMLHttpRequest est terminé et que le code d'état HTTP est dans la plage 2XX. : Failure: Appelé lorsque XMLHttpRequest est terminé et que le code d'état HTTP n'est pas dans la plage 2XX. : Complete: appelée lorsque XMLHttpRequest est terminée (se déclenche après succès/échec s'ils sont présents).

Fondamentalement choisir quand vous voulez qu'il soit désactivé, et utiliser la fonction de rappel qui correspond à ce point pour définir l'attribut onclick sur le lien « return false; » ou quelque chose comme ça. Vous pouvez également simplement supprimer l'élément si vous ne voulez plus qu'il apparaisse.

Si vous voulez que le lien soit désactivé au premier point possible, j'ajouterais un écouteur d'événement pour les événements click quel que soit l'ID du lien, puis définissez à nouveau onclick = "return false;" ou vous pouvez supprimer/masquer etc.

Questions connexes