Je suis tout simplement essayer de construire un link_to
avec method: :delete
pour appeler la méthode destroy
dans mon contrôleur utilisateurs:rails 4.2 Méthode link_to: Aucun résultat de route [POST]
<%= link_to 'disable token', user_path(user), method: :delete, data: { confirm: 'Are you sure?'} %>
qui génère du HTML qui ressemble à:
<a data-confirm="Are you sure?" rel="nofollow" data-method="delete" href="https://stackoverflow.com/users/6">disable token</a>
Mon fichier application.js
a:
//= require jquery
//= require jquery_ujs
Et, en fait, je sais que le javascript est chargé et fait ce qu'il est censé faire, parce qu'il génère la boîte de dialogue d'alerte 'Êtes-vous sûr?'
Cependant, en suivant le lien que je reçois le texte suivant:
No route matches [POST] "https://stackoverflow.com/users/9"
Et en effet, il n'y a pas cette route, parce que mes seuls itinéraires sont:
users_path GET /users(.:format) users#index
user_path DELETE /users/:id(.:format) users#destroy
Le mystère (pour moi) est POURQUOI Rails fait-il un POST sur cette route en premier lieu? Vous noterez que l'URL est correcte ("/ users/9") mais que le verbe HTTP n'est pas: POST.
Les paramètres de la requête sont Préparatifs:
{"_method"=>"delete",
"authenticity_token"=>"VcAVJF1/f9mwjNI4GPteRtDiyjKobnioF0hIQvF+3BVMzUnIoHymM2Z3w2sqSLJqJ11sZ/tIHt78aA9
}
Ici vous pouvez voir la clé _method
étant réglé sur delete
comme il devrait être, alors pourquoi l'erreur de routage?!?
Je suis perplexe.
Edit: Si je change link_to
appel à inclure remote: true
routes Rails à l'itinéraire approprié! Donc, comme un "correctif" pour cela, j'ai changé mon contrôleur pour utiliser UJS, mais je n'aime pas cela parce que, eh bien, autant que je sache ce que j'avais avant devrait fonctionner!
Voici la requête SUPPRIMER appel qui envoie un bon link_to
comme JS:
<%= link_to 'disable token', u, method: :delete, data: { confirm: 'Are you sure?'}, remote: true %>
BTW - J'ai passé en revue les différentes questions et réponses sur la pile liées à link_to et à la méthode:: delete, mais je n'ai trouvé personne avec ce problème. S'il y a une réponse étendue, veuillez la poster! Merci. – ipd
Peut-être que cela aiderait à utiliser quelque chose comme les outils de développement chrome et inspecter le HTML généré par ce 'link_to'. Vous pouvez également l'utiliser pour vous assurer que vous regardez le bon lien. – panmari
Quelle version de rails est utilisée dans votre application? – Aamir