Supprimer le lien envoie “Get” au lieu de “Supprimer” dans Rails 3, vue
Je suis à l'aide de Rails 3 et avez une page qui affiche une liste de messages à partir de la base de données. Je voudrais être en mesure de supprimer un post à partir d'un lien.
Le 2ème exemple ci-dessous fonctionne, mais la première ne l'est pas. Quelqu'un sait pourquoi le premier ne fonctionne pas? De mon point de vue contient:
# this link sends a "GET" request which asks for the #show function
<%= link_to 'Delete', post, :method => :delete %>
# this link sends the proper "DELETE" request which asks for the #destroy function
<%= button_to 'Delete', post, :method => :delete %>
Mes itinéraires fichier contient les éléments suivants:
resources :posts
Vous devez vous connecter pour publier un commentaire.
Assurez-vous que votre
<head>
section dans la mise en page comprend les éléments suivants:Dans Rails 3, supprimer les demandes sont traitées à l'aide de JavaScript afin de s'assurer que la demande est envoyé correctement. Si vous n'avez pas le csrf balises meta et le code JavaScript, supprimer liens ne fonctionne pas. Le
:defaults
fichiers JavaScript comprennent, entre others--prototype.js et application.js. Ce dernier contient la substance qui rend le lien de travail, mais s'appuie sur le Prototype de cadre.Si vous ne souhaitez pas utiliser la valeur par défaut Prototype de bibliothèques JavaScript, il existe des ports de application.js pour plusieurs autres cadres. Vous pouvez trouver le jQuery, un ici, par exemple.
Boutons continuera de fonctionner indépendamment de JavaScript, le code HTML généré avec
button_to
comprend toutes les informations nécessaires par lui-même. C'est pourquoi vous voyez le bouton du travail alors que le lien ne fonctionne pas.ressemble
n'est plus supporté
http://apidock.com/rails/ActionView/Helpers/AssetTagHelper/JavascriptTagHelpers/javascript_include_tag
Au lieu de cela, vous devez utiliser
Dans mon cas, j'ai été en utilisant la suite.
J'ai été aussi à l'aide de jQuery en incluant juste en dessous de jQuery par défaut prototype JS. Qui était à l'origine une sorte de conflit.
Actions destructrices doit être effectuée comme une soumission de formulaire http://www.w3.org/2001/tag/doc/whenToUseGet.html#checklist
Vous pouvez définir le style du bouton de façon appropriée pour la méthode de suppression ou Utiliser le Formulaire.
J'ai eu le même problème dans les rails 5.2.3 et ce qui m'a aidé:
mise en page de la tête:
config/initializers/actifs
Cela fonctionne. Le problème est le fait que vous avez besoin pour passer le droit chemin si la route qu'il obtient.
Dans mon cas, avec des Rails 5, j'ai été en utilisant la suite dans ma mise en page:
De cette façon:
Essayer ce.. c'est un simple changement..
ajouter à votre itinéraire.rb fichier
get '/lists/:list_id/commentaires/:id' => 'commentaires#détruire'
J'ai fait ce changement, et maintenant son travail..