ruby on rails link_to-Methode löschen funktioniert nicht
Ich versuche, um einen Beitrag zu löschen mit dem folgenden code:
<%= link_to 'Destroy', post, :method => :delete, :onclick => "return confirm('Are you sure you want to delete this post?')" %>
welches nicht funktioniert... leitet es einfach mich zurück zu dem post (posts/:id}
allerdings, wenn ich den folgenden code funktioniert es
<%= button_to 'Destroy', post, method: :delete, :onclick => "return confirm('Are you sure you want to delete this post?')" %>
ist es möglich link_to
Verhalten, als button_to
in diesem Fall?
EDIT: zerstören controller-Funktion
def destroy
@post = Post.find(params[:id])
@post.destroy
respond_to do |format|
format.html { redirect_to posts_url }
format.json { head :no_content }
end
end
melden, wenn ich auf die destroy-button:
Started GET "/posts/14" for 127.0.0.1 at 2012-10-21 15:38:28 +0300
Processing by PostsController#show as HTML
Parameters: {"id"=>"14"}
Post Load (0.4ms) SELECT `posts`.* FROM `posts` WHERE `posts`.`id` = 14 LIMIT 1
Rendered posts/show.html.erb within layouts/application (0.6ms)
User Load (0.4ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 1 LIMIT 1
Completed 200 OK in 7ms (Views: 5.4ms | ActiveRecord: 0.8ms)
[2012-10-21 15:38:28] WARN Could not determine content-length of response body. Set content-length of the response or set Response#chunked = true
Routen:
devise_for :users
resources :users
resources :posts
match '/about' => 'about#index'
# You can have the root of your site routed with "root"
# just remember to delete public/index.html.
root :to => 'index#index'
# See how all your routes lay out with "rake routes"
# This is a legacy wild controller route that's not recommended for RESTful applications.
# Note: This route will make all actions in every controller accessible via GET requests.
# match ':controller(/:action(/:id))(.:format)'
match '*a', :to => 'error#routing'
- Können Sie bestätigen, haben Sie die jquery-rails gem in Ihrem Gemfile? Und wenn es ist, können Sie auch bestätigen, über Ihren web-Inspektor, dass es immer an den Clientbrowser gesendet.
- ja also, wenn ich das rails Projekt habe ich entfernt //= Zeilen ab app.js und das war das problem verursacht... danke!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie hinzufügen
in javascripts/application.js Datei
zweite, check-in-layout-Datei,
ist enthalten oder nicht?
Hoffe, dass dies helfen.
Lösung:
Hatte ich auskommentiert, dies von application.js wenn ich das Projekt erstellt
also re-adding es in das problem,
require jquery_ujs
ist der wesentliche Teil, in Fall, dass nicht offensichtlich ist.Haben Sie diese Zeile in Ihre layout-Datei?
Dies ist die Schienen Weg:
<%= link_to 'Destroy', post, confirm: 'Are you sure?', method: :delete %>
Wenn der post ist nicht gelöscht, dann liegt das problem im controller. Sind Sie sicher, dass Sie richtig umgesetzt
#destroy
Aktion? Was ist die Ausgabe, die Sie immer in Ihren server-logs?UPDATE: Ändern Sie Ihre Aktion:
format.json
Linien.Stellen Sie sicher, dass kein Leerzeichen nach dem param
Überprüfen Sie die Leerzeichen.
Überprüfte ich alle Kommentare hier. Alle includes richtig gesetzt sind. Aber ich merkte, dass die Streichung der Artikel hat nicht funktioniert, beim löschen von Kommentaren funktionieren würde. Nach dem umschreiben von code und prüfen hier und da, fand ich zwei Dateien, die sah gleich in den editor, sondern eine version die funktionieren würde, und man würde nicht funktionieren!
curry-blog/app/views/articles/index.html-Code.erb:
Jedoch, einen Blick auf die Dateien mit
xxdiff
fand ich, dass in der einen version nur die tabs, wo verwendet, während die andere ebenfalls verwendete Rohlinge. Wahrscheinlich aus copy & Paste-code aus dem tutorial. Ersetzen Sie die Leerzeichen mit tabs hat daher das problem zu beheben.