2016-06-20 11 views
1

ich auf Ruby on Rails 4.2.6 arbeite, das ist meine show.html Datei istRuby on Rails 4.2.6 "löschen Aktion" nicht funktioniert

<h1><%= @post.title %></h1> 
<p><%= @post.body %></p> 
<p><%= @post.created_at %></p> 
<%= link_to "Edit Post",edit_post_path %> | <%=link_to 'Delete Post',@post,method: :delete %> 

und dies ist mein Code in Beiträge Controller

def destroy 
@post = Post.find(params[:id]) 
@post.destroy 
redirect to post_path,:notice =>"your post has been deleted" 
end 
end 

das Datum zu löschen ist nicht und es zeigt, und die Fehler innerhalb Eingabeaufforderung ist

action controller::routing error(no routing matches  [get]"/javascripts/default.js) 

kommen freundliche Hilfe!

+0

verwenden Sie Windows-System? – dp7

+0

Ja ich benutze Windows 7. –

+0

loswerden Sie Ihre Windows-Box für Ruby on Rails Entwicklung, versuchen Sie virtuelle Box oder jede Online-Plattform wie https://c9.io/ - FYI: Das Problem ist, dass "DELETE" Anfrage wird nicht in Windows eher ein "GET" gemacht Anfrage geht zum Server und es verwirrt, welche Aktion ausgeführt werden soll. Und wieder tritt das Problem auf, weil Sie Ihre 'application.html.erb' Datei geändert haben, um' default.js' anstelle von 'application.js' zu laden. – dp7

Antwort

1

Die Methode destroy sollte sein:

def destroy 
    @post = Post.find(params[:id]) 
    @post.destroy 
    redirect_to posts_path, :notice => "your post has been deleted" 
end 
+0

Ich habe versucht, es funktioniert nicht! –

0

1). Der Fehler bedeutet nicht, dass die Aktion "delete" nicht funktioniert, sondern irgendwo in Ihrem html/erb, dass Sie "/javascripts/default.js" laden wollen, aber es gibt keine Definition für diese URL in Ihrem config/routes.rb

2). Der destroy Controller Code, den Sie zur Verfügung gestellt hat eine redundante end, sollte wie folgt sein:

def destroy 
    @post = Post.find(params[:id]) 
    @post.destroy 
    redirect to post_path, notice: "your post has been deleted" 
end 

3). Ich denke, dass Ihr Server einige Ausnahmen für diesen Syntaxfehler protokollieren sollte, wenn etwas schief geht, sollte die Protokolldatei die ersten Dinge sein, die Sie überprüfen.

+0

Nun, ich denke dein erster Punkt scheint relevant zu sein. Kannst du bitte ein bisschen mehr erklären, wie das geht. Ich bin neu in diesem Bereich. !! –

+0

Können Sie die Serverprotokolldatei in Ihre Frage einfügen? Oder wurde die Anfrage nie an den Server gestellt? –

+0

Begann GET "/javascripts/default.js" für :: 1 am 2016-06-20 13:52:54 +0530 ActionController :: RoutingError (Keine Route entspricht [GET] "/javascripts/default.js") : –

0

in Ihrem Controller

redirect to post_path 

ist falsch Sie Seite zu zeigen, umleiten müssen Sie auf Index-Seite umleiten.

redirect to posts_path