2009-11-05 8 views
0

J'ai une application Rails où je faisais une boîte de dialogue de suppression générale avec "êtes-vous sûr" avant qu'il ne soit supprimé. Tout va bien, mais j'ai aussi un petit ajax sur clic pour enlever le bloc contenant toutes les informations. Le bloc est retiré, peu importe ce qui rend les choses confuses. Je ne pouvais pas trouver de documentation en ligne sur la façon d'exécuter une action après le symbole de confirmation.conditionnel: confirmer dans link_to_remote

Mon code ressemblait à ceci:

<%= link_to_remote "Delete", :url => 
    {:controller => "pixel", :action => :destroy, :id => pixel.id}, 
    :onclick=>"$(this).up(0).remove()" %> 

Merci!

Répondre

1

Pouvez-vous poster votre code? J'imagine quelque chose comme ça fonctionnerait:

link_to_remote("Delete item", :url => item_path, :method => 'delete', :confirm => 'Are you sure?') 
+0

Mon code ressemblait à ceci <% = link_to_remote "Supprimer",: url => {: controller => "pixel",: l'action =>: détruire,: id => pixel.id},: onclick => "$ (this) .up (0) .remove()"%> –

0

Je n'ai pas le temps de poursuivre un exemple en ce moment, mais essayez d'utiliser l'option :complete-link_to_remote pour enlever l'élément après l'action est terminée, au lieu de :onclick .

http://api.rubyonrails.org/classes/ActionView/Helpers/PrototypeHelper.html#M001645 - regardez la section "callbacks".

Il est probablement aussi simple que:

<%= link_to_remote "Delete", :url => 
    {:controller => "pixel", :action => :destroy, :id => pixel.id}, :confirm => "You sure?", 
    :complete =>"$(this).up(0).remove()" %> 
+0

Cela ne semble pas fonctionner pour moi. Je ne pense pas que ça a tiré du tout. J'ai fondamentalement besoin du JS pour déclencher ou non basé sur la réponse à l'alerte js. Je regardais aussi la documentation et j'ai vu quelque chose appelé conditionnel mais je ne sais pas comment cela fonctionne non plus. Aussi je sais que je pourrais faire quelques trucs avec le contrôleur et une méthode là-dedans probablement, mais c'est tellement simple. Il suffit d'appeler un JS en fonction de ce que dit la boîte d'alerte. –

0

Puis-je faire une petite suggestion, en utilisant les routes qui sont basées sur les routes par défaut (contrôleur, méthode, id) devrait idéalement pas être utilisé, utilisez plutôt routes nommées ou les routes reposantes appropriées donnés gratuitement lorsque vous déclarez vos routes (par exemple map.resources: pixels)

Je recommande fortement de lire the rails routing guide, c'est un bon résumé de ce qui peut être fait et comment le faire. Pour ce qui est de votre question, ce que vous essayez d'accomplir est basé sur un javascript intrusif. Cela ne veut pas dire que la méthode link_to_remote n'est pas géniale, mais elle génère certainement du code désordonné si vous affichez une liste. Je serais plus propre un plus agréable, à mon avis, pour d'abord implémenter un exemple de travail sans javascript puis ajouter le javascript discrètement. Est-ce que cela ajoute des frais généraux? oui, mais votre code sortira plus propre et vous permettra d'ajouter facilement une logique supplémentaire (comme supprimer la ligne que vous avez supprimée) sans avoir à dupliquer la fonctionnalité sur chaque ligne.

Désolé mais je n'ai pas assez de temps pour fournir des exemples, mais une simple recherche sur google pour les rails javascript discrets donne beaucoup de résultats, mais here is one pour vous aider à démarrer.

Hope this helps, même si son un peu hors sujet :)