Warum Schienen "link_to" funktioniert nicht für die Aktion löschen?
In index.html.erb
zeige ich alle Produkte und neben jedes Produkt habe ich Edit
und Delete
Aktionen:
<% @products.each do |product| %>
...
<%= link_to("Edit", edit_product_path(product.id), :class => 'action') %>
<%= link_to("Delete", product, :method => :delete, :class => 'action') %>
...
<% end %>
Den Edit
link funktioniert ok. Jedoch, die Delete
link funktioniert nicht. Ich bekomme die folgende Fehlermeldung:
Unknown action
The action 'show' could not be found for ProductsController
Ich denke, es ist, weil die Anfrage-Methode GET ist, anstatt zu LÖSCHEN. Aber, ich weiß nicht, warum dies passiert, wenn ich explizit :method => :delete
.
routes.rb
ist ziemlich einfach:
root :to => "products#index"
resources :products
Ich Javascript aktiviert haben.
Bitte vorschlagen.
- Haben Sie versuchen, hinzufügen die show-action, auch wenn Sie es nicht verwenden, so dass Sie Ihre Routen haben, die Sie abgedeckt?... Nur so ein Gedanke
- Haben Sie delete action im controller? Und auch versuchen, rake:route-Befehl, um zu sehen, wenn löschen Pfad ist richtig definiert.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie
rails.js
angegebenjavascript_include_tag
? Dies ist erforderlich für die unaufdringlicheDELETE
Methode zu arbeiten. Wenn du mit jQuery dann gibt es eine Lösung für das auch.rails.js
geladen wird. Ich verwende jQuery-1.4.4. Ist das ein problem ? Ich habe gerade heruntergeladen es von der offiziellen Website und setzen Sie es injavascript_include_tag
. Sollte ich es ersetzen mit den Dateien aus deinem link ? Was genau muss ich herunterladen ?rails.js
mit dem jQuery-äquivalent.javascript_include_tag :defaults
?javascript_include_tag :defaults
und setzenjavascript_include_tag 'jquery-1.4.4.min.js', 'rails.js'
statt (die neuerails.js
aus dem link oben). Der Fehler ist immer der gleiche:The action 'show' could not be found for ProductsController
. Was sonst noch falsch sein könnte ?config.action_view.javascript_expansions[:default] = ["jquery", "rails"]
javascript_include_tag 'jquery-1.4.4.min.js', 'rails.js'
, richtig ? Aber, wie Schienen, wird wissen, die jQuery-Datei/version zu verwenden ?rails.js
- Datei, die ich heruntergeladen habe. Ich heruntergeladen habe, ein paar HTML-Datei statt und nannte esrails.js
. So dumm... Jetzt funktioniert alles einwandfrei. Vielen Dank für Ihre Zeit!Vergessen Sie nicht, gehören
jquery_ujs
in Ihremapplication.js
Datei:Muss es
product_path(product)
stattproduct
in deinem link löschen.<a data-method="delete" class="action" href="/products/73">Delete</a>
Hatte ich dasselbe problem - eigentlich hatte ich änderte meine alte "löschen" - Aktion zu "vernichten" - aber vergessen, Wenn Ihr mit SSL - .. e.g ssl_required :zerstören)