2017-11-15 2 views
-2

Die Methode destroy funktioniert nicht, aber ich werde auf die Indexseite umgeleitet, aber der Datensatz wird nicht gelöscht.Warum funktioniert die Methode delete nicht in Ruby?

enter image description here

HTML.erb Link:

<%= link_to "Delete", posts_path(@post), method: :delete, data: {confirm: 'are you sure?'},:class => 'btn btn-danger' %> 

Controller:

def destroy 
    @post = Post.find(params[:id]) 
    @post.destroy 
    redirect_to posts_path 
end 
+0

Seitliche Anmerkung: Verwenden Sie zwei Leerzeichen zum Einrücken. –

+0

'link_to" Delete ", post_path (@post)' oder nur 'link_to" Delete ", @ post' Die Verwendung von' method:: delete' basiert auf Javascript ('jquery-ujs' ist präzise). Wenn die Anforderung als GET gesendet wird (überprüfen Sie die Protokolle), müssen Sie die Browser-Konsole auf JavaScript-Fehler prüfen. Sie können auch 'button_zu" Löschen ", @ post' verwenden, was ein Formular erstellt und nicht auf Javascript basiert. – max

+0

Können Sie Ihr Serverprotokoll veröffentlichen, wenn Sie auf diesen Link klicken. Außerdem sollte es 'post_path (@post)' – Abhi

Antwort

1

posts_path ist der Pfad zu index Aktion. Ändern Sie posts_path zu post_path in dem Delete Link-Tag, um zu destroy Aktion zu umleiten.

<%= link_to "Delete", post_path(@post), method: :delete, data: {confirm: 'are you sure?'},:class => 'btn btn-danger' %> 
+0

hat den Code ausprobiert, aber er wird nur auf der gleichen Seite aktualisiert und löscht den Datensatz nicht. –

+0

Können Sie die Rails-Anforderungsprotokolle posten? –

+0

@NidheeshJp Wenn die Seite nicht aktualisiert werden soll, fügen Sie 'remote: true' zu' link_to' hinzu – Abhi

Verwandte Themen