Rails 3 link_to (: method =>: suppression) ne fonctionne pas
-
30-09-2019 - |
Question
Je vais avoir problèmes avec mes verbes dans Rails ...
l'affichage d'une page pour une ressource (Dog) qui has_many (Fleas). Intégré dans le show.html.haml
de chien est un appel à render @dog.fleas
qui automatiquement (?) Trouve et utilise le modèle dans « puces / _flea.html.haml » à la liste chaque puce associée à chien dit.
affiche correctement. ouf! Maintenant, à côté de chaque puce que j'ai mis un lien « Kill Flea » qui va à une url: //localhost:3000/dogs/1/fleas/7
. Ce qui est généré par:
= link_to("Kill Flea", [ flea.dog, flea ], :method => :delete, :confirm => "Sure? A bunny will die")
mais à chaque fois que vous cliquez sur le lien, il n'y a aucune confirmation ... et il rend la page show.html
de la puce. il est comme s'il utilise GET sur /dogs/1/fleas/7
au lieu de Supprimer ?!?
PS- pas inquiet au sujet des araignées et des robots choses dans ma supprimer la base de données ... je suis juste essayer d'apprendre Rails..and comprendre ce qui se passe
La solution
Rails 3 utilise le langage Javascript discret maintenant. Dans Rails 2.3, erb serait juste fourrer tout ce désordre javascript droit dans le lien lui-même, dans un événement onClick. Maintenant, le javascript a été déplacé hors du lien, et dans les fichiers js externes. Assurez-vous que vous avez dans votre mise en page:
<%= javascript_include_tag :all %>
Si vous avez cela, il pourrait y avoir des problèmes plus profonds garder votre javascript de courir, mais c'est l'endroit pour commencer. Faites-moi savoir comment il se trouve.
Autres conseils
Salut, vous pouvez aussi essayer ceci:
application.html.erb:
<%= javascript_include_tag 'jquery_ujs' %>
OR
<%= javascript_include_tag "http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js", "jquery.rails.js" %>
Vérifiez votre <%= javascript_include_tag %>
dans application.html.erb
Peut-être vous manque le js "application"
Il faut regarder au moins comme
<%= javascript_include_tag "application" %>
Ici, je ne suis pas en utilisant le javascript_include_tag: tous,: application, etc. J'utilise mes propres fichiers js, avec un autre nom personnalisé: javascript_include_tag: my_custom_file et moi avons eu aussi cette question. Et je ne suis pas en utilisant « = besoin jquery » dans le fichier, mais javascript / jquery fonctionne. Je pense que Rails comprend jquery par défaut. Ce que je fait est que je changé le
link_to "Logout", destroy_user_session_path, :method => :delete
à
form_tag destroy_user_session_path, :method => :delete, :id => "logout_form"
link_to 'Logout', "#delete", :onclick => "$('#logout_form').submit();"
Maintenant, sa fin de travail.
vérifier si application.html.erb
<%= javascript_include_tag :application %>
pas:
<%= javascript_include_tag :default %>
On dirait que votre méthode de link_to n'est pas tout à fait raison. Essayez d'utiliser ce code à la place:
<%= link_to 'Kill Flea', [flea.dog, flea], :confirm => 'Sure?', :method => :delete %>