2010-03-01 11 views
3

J'ai un link_to_remote et je veux m'assurer que les gens ne peuvent cliquer qu'une seule fois en attendant le retour.Existe-t-il un: disable_with équivalent pour link_to_remote?

Y at-il un bon moyen de le désactiver après que quelqu'un clique dessus? (Changer le texte du lien est sympa aussi, mais je veux le désactiver aussi pour être sûr).

Ceci est Ruby on Rails btw.

Répondre

3

Je fini par remplacer le lien dans le: avant bloc comme suggéré Edgard:

<div id="parent"> 
    <%= link_to_remote "Click Here", 
    {:url => "/some_long_url", 
    :method => :post, 
    :before => "$('#parent').html('#{escape_javascript(link_to("Click Here"))}');"} %> 
</div> 

RemarqueCet utilise JQuery. Si vous utilisez un prototype, vous devrez peut-être changer la méthode '.html' en équivalent prototype ('.update' je crois).

Puis, après l'appel AJAX est fait redessine la link_to_remote avec quelque chose comme ...

render :update do |page| 
    page.replace_html 'parent', :partial => 'partial_containing_your_link_to_remote', :locals => {} 
end 

Le link_to_remote dans la première partie devrait vraiment être dans ce même partiel pour le garder sec

3

Vous ne pouvez pas désactiver un lien, mais vous pouvez modifier le href par exemple.

Vous pouvez donc utiliser: before ou: loading hooks pour "désactiver" le lien en utilisant javascript.

+0

Eh oui, mais alors il doit le changer après avoir terminé à droite? (sauf si le lien lui-même est remplacé dans le cadre de l'appel distant). Quelqu'un at-il un bon exemple de ce code? –