2017-07-07 18 views
1

zu implementieren Ich folge diesem tutorial, um eine einfache Blogger-Seite zu bauen.Kann nicht in Rails Controller

Allerdings kann ich die Löschfunktion nicht implementieren, wie im Lernprogramm gezeigt.

Die Schritte sind wie folgt gegeben:

Lassen Sie sich das zerstört Methode in unseren ArticlesController so es definieren:

  • Uses params [: id], um den Artikel in der Datenbank zu finden

  • Anrufe .destroy für dieses Objekt

  • Weiterleitung an die Kunst icles index page

Tun Sie das jetzt selbst und testen Sie es.

Dies ist mein Code:

class ArticlesController < ApplicationController 
    include ArticlesHelper 

    def index 
     @articles = Article.all 
    end 

    def show 
     @article = Article.find(params[:id]) 
    end 

    def new 
     @article = Article.new 
    end 

    def create 
     @article = Article.new(article_params) 
     @article.save 
     flash.notice = "Article '#{@article.title}' Created!" 
     redirect_to article_path(@article) 
    end 

    def destroy 
     @article = Article.find(params[:id]) 
     @article.destroy 
     redirect_to articles_path 
    end 
end 

show.html.erb

<h1><%= @article.title %></h1> 
<p><%= @article.body %></p> 
<%= link_to "<< Back to Articles List", articles_path %> 
<%= link_to "delete", article_path(@article), method: :delete %> 

article_helper.rb

module ArticlesHelper 

    def article_params 
    params.require(:article).permit(:title, :body) 
    end 

end 

Ich habe online über andere Lösungen durchsucht, aber ich don Ich sehe keinen Code, den ich übersehen hätte.

In meinem Fall führt das Klicken auf den Link zum Löschen nur zur Aktualisierung der Seite.

+2

Warum 'privat'? move it up –

+0

Danke, ich habe das geänderte Tutorial auf github verfolgt, ich habe den Code entsprechend dem neueren Tutorial aktualisiert, aber es funktioniert immer noch nicht. – Carrein

+0

Was ist der Fehler? – puneet18

Antwort

1

Ich fand das Problem:

Das Setup wurde unter Windows ausgeführt. Ich habe zuvor eine fix angewendet, da die Seite nicht geladen werden würde.

Dieses Update verursacht den Fehler hier:

Action :: RoutingError (keine Route treffer [GET] "/javascripts/default.js"):

Die Art und Weise, dies zu beheben ist, die vorherigen Änderungen oben rückgängig zu machen und dem Fix here zu folgen.

Anscheinend funktioniert coffee-script-source 1.9 und höher unter Windows nicht.

+0

ein schneller Vorschlag, benutze Linux/Ubuntu, natürlich MacOS ist auch in Ordnung .. :) –

2

private Methoden in Steuerungen sind außerhalb der Steuerung nicht zugänglich, auch nicht auf Routen. Sie können also niemals in Ihrem aktuellen Code zu destroy oder article_params routen. Wenn Sie Ihre destroy Methode über das Schlüsselwort private verschieben, sollten die Dinge behoben werden.

+0

Danke, ich habe das geänderte Tutorial auf github verfolgt, ich habe den Code aktualisiert, wie im neueren Tutorial, aber es funktioniert immer noch nicht. – Carrein

Verwandte Themen