Rails 4 link_to Détruire ne fonctionne pas dans le tutoriel d'initiation
Je suis en train de travailler à travers le tutoriel d'initiation (la création d'un Blog) et le link_to Détruire ne fonctionne pas correctement. Dans le terminal, il est toujours l'interprète comme #SHOW.
Dans la lecture des problèmes similaires, j'ai appris que la Suppression doit être converti à un POSTE pour le navigateur de l'interpréter. Cela ne semble pas être le cas.
J'ai eu le même problème à l'aide de Détruire dans la Lynda.com Rails de course, de sorte qu'il m'amène à croire que c'est quelque chose dans mon environnement de développement. Je suis à l'aide de Rails 4, Ruby 2.00p274, MySQL, WEBrick pour le serveur HTTP sur un MacBook Pro Lion.
dans le terminal de la session quand les Détruire est sélectionné:
Started GET "/posts/4" for 127.0.0.1 at 2013-08-09 13:45:20 -0600
Processing by PostsController#show as HTML
Parameters: {"id"=>"4"}
Post Load (0.6ms) SELECT "posts".* FROM "posts" WHERE "posts"."id" = ? LIMIT 1 [["id", "4"]]
Rendered posts/show.html.erb within layouts/application (0.4ms)
Completed 200 OK in 13ms (Views: 8.6ms | ActiveRecord: 0.6ms)
Dans les ports-contrôleur.rb:
def destroy
@post = Post.find(params[:id])
@post.destroy
redirect_to action: :index
end
Dans l'index.html.erb:
<% @posts.each do |post| %>
<tr>
<td><%= post.title %></td>
<td><%= post.text %></td>
<td><%= link_to 'Show', post %></td>
<td><%= link_to 'Edit', edit_post_path(post) %></td>
<td><%= link_to 'Destroy', { action: :destroy, id: post.id }, method: :delete, data: { confirm: 'Are you sure?' } %></td>
</tr>
<% end %>
Dans les itinéraires.rb
Blog::Application.routes.draw do
resources :posts do
resources :comments
end
root to: 'welcome#index'
end
- Montrez à vos mises en page/de l'application.html.erb et app/assets/application.js.
- Vous devez utiliser le
jquery_ujs
bibliothèque inclus par défaut dans une nouvelle application Rails pour faire:delete
méthodes POST pour le point de terminaison comme prévu. - Post que comme une réponse! J'ai eu exactement le même problème, et les réponses données mais n'aident pas, mais y compris les jquery_ujs dans le fichier
application.js
ne résoudra pas pour moi. Peut-être seulement un problème lors de la migration ... - Double Possible de Supprimer le lien envoie "Get" au lieu de "Supprimer" dans Rails 3, vue
Vous devez vous connecter pour publier un commentaire.
Essayer cette
Assurez-vous que gem 'jquery-rails" est dans le gemfile et jquery_ujs est inclus dans app/assets/javascripts/application.js fichier
Source: https://github.com/rails/jquery-ujs
application.js
manquaitjquery_ujs
. Je suppose que j'ai retiré tout en suivant le processus d'installation à partir d'un twitter bootstrap gemJ'ai eu le même problème, pour les rails 4.2.X. Vérifié tous mes fichiers javascript, mais ne pouvait pas le faire fonctionner. si vous regardez de plus près à la demande de serveur u sera disparus "authenticity_token" dans les paramètres, de sorte que l'utilisateur obtient déconnecté.
Dans les rails 4.1 et au-dessus de u doivent utiliser button_to au lieu de link_to
link_to
fonctionne bien dans les Rails 4.2J'ai résolu le problème, en ajoutant seulement dans assets/javascripts/application.js
Assurez-vous que vous avez une Suppression de REPOS méthode via râteau routes.
J'ai le même problème qu'avec cette version blog que je suis en train de faire à la fois.
http://blog.8thcolor.com/en/2011/08/nested-resources-with-independent-views-in-ruby-on-rails/
J'essaie aussi d'apprendre à utiliser la console web et faites levier à l'intérieur.
Mon problème est que la liaison.pry n'apparaît pas dans la méthode destroy mais ne sera en spectacle. Qui me dit que ça doit être un mauvais lien? Ce n'est pas arriver à le détruire méthode même. Merci à vous tous pour vos réponses. Nous avons à essayer des choses n'est-ce pas?
Essayer
n'est pas d'aller travailler pour une autre.
Voici ce qu'il a
parce que vous voulez supprimer le commentaire ici.
Mais la combinaison de choses jusqu'à présent comme suit donne aucune erreur, mais je n'ai toujours pas de liaison.soulever de la méthode destroy dans le contrôleur.
et je n'ai jamais eu la confirmation comme vous attendrait.
Donc, ne pas essayer de comprendre ce qui se passe avec jquery comme suspect.
Je peux confirmer que c'était mon cas mais pour le reste, je vais partir pour nubes, car cela permettra de montrer dans une recherche google.
Started GET "/posts/4" for 127.0.0.1 at 2013-08-09 13:45:20 -0600
C'est le problème. Le lien de suppression est l'utilisation de GET http verbe, même si vous avez utilisé
method: delete
dans votre lien.Consultez le fil
comprennent en dessous de la ligne de js
inclure gem:
Détruire Lien:
J'ai eu le même problème et réalisé que j'avais créé mon application rails avec
-J
qui est le même que--skip-javascript
.Vous devez activer le JavaScript pour que cela fonctionne; l'absence d'une popup de confirmer la suppression est un don mort.
J'ai eu exactement ce problème et il a été causé par triple-cliquant sur le Guide du bloc de code et copier/coller le code directement dans mon éditeur (ST2 sur OSX).
Vous devez vérifier que le code HTML généré pour le lien ressemble à ceci:
Si ça ne marche pas, mais au lieu de cela ressemble au dessous, puis le Javascript n'est pas appliqué:
L'écart important entre les
href
et la unparsed Ruby sont causés par le non-espaces insécables (caractère unicode\u00a0
) utilisés dans le Guide copié dans votre script.Je ne sais pas pourquoi cela ne cause pas un script qui parse error.
J'ai eu le même problème que Barry. Assurez-vous de copier/coller correctement dans votre /app/views/index.html.erb fichier et d'inspecter le code html qui est affiché.
J'ai eu le même problème. Dans mon cas, j'ai eu un changement \app\views\layouts\application.html.erb fichier de
à
à éviter lors de ma première Rails de problème. Mais apparemment il mutilé d'exécution de JavaScript, et a causé de Détruire question.
Par conséquent, la restauration de votre \app\views\layouts\application.html.erb fichier à son état d'origine, et de traiter ce problème comme ici
Rails ExecJS::ProgramError dans les Pages de#la maison?
dans evedovelli réponse (de coffeescript gem dans windows).
J'ai eu le même problème. Je travaille de cette manière:
Mon env. est:
A. ruby 2.2.4p230 (2015-12-16 révision 53155) [x64-mingw32]
B. Rails 4.2.5
C. Navigateur: Firfox 44.02
ajouter comprennent js dans la page html car la fonction supprimer utiliser js pour gérer.
<%= javascript_include_tag "application" %>
ajouter
skip_before_action :verify_authenticity_token
de contrôleur pour éviter InvalidAuthenticityToken dans AdsController#détruireajouter link_to dans votre page web
<%= link_to 'Delete', post, method: :delete, data: {confirm: "Are you sure?"}%>
Maintenant, je peux utiliser link_to pour supprimer un enregistrement de ma page.