2017-01-22 10 views
0

Ich bin sehr neu in Ruby on Rails. Ich versuche, durch den Führer zu gehen und lerne, indem ich den einfachen Blog mache. Beim Versuch auf den localhost zuzugreifen gibt mir der Fehler im Titel. Ich bin mir sicher, dass dies eine einfache Lösung ist, ich kann es gerade nicht sehen. Vielen Dank!articles_controller.rb: 26: Syntaxfehler, unerwartetes Ende der Eingabe, erwartet keyword_end

class ArticlesController < ApplicationController 
    def new 
    @article = Article.new 
    end 
    def create 
    @article = Article.new(article.params) 

    if @article.save 
     redirect_to @article 
    else 
     render 'new' 

    end 

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

    def index 
    @articles = Article.all 
    end 

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

Sie vermissen ein Ende als Teil der, wenn in Ihrer Methode erstellen – Doon

Antwort

2

end Wort in Ihrer create Aktion hinzufügen. Das muss

class ArticlesController < ApplicationController 
    def new 
    @article = Article.new 
    end 
    def create 
    @article = Article.new(article.params) 

    if @article.save 
     redirect_to @article 
    else 
     render 'new' 
    end 
    end 

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

    def index 
    @articles = Article.all 
    end 

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

mit zusätzlichem bekam ich einen neuen Fehler „Ende“, „nicht definierte Methode' jeden‘für Null: NilClass“ –

+0

'article_params' statt' article.params 'Ich denke – VAD

+0

Danke VAD! Das hat geholfen. war ein langer Tag für mich, hass Tippfehler zu begehen, haha. –

4

Einrückungen

arbeiten Wenn Ihr Texteditor kann nicht automatisch indent Code, benutzen Sie ein anderes!

Wenn Ihr Texteditor Code einrücken kann, bitte benutzen;)

class ArticlesController < ApplicationController 
    def new 
    @article = Article.new 
    end 
    def create 
    @article = Article.new(article.params) 

    if @article.save 
     redirect_to @article 
    else 
     render 'new' 

    end 

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

    def index 
     @articles = Article.all 
    end 

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

Sie können sehen, dass def create die letzte Methode Definition mit der richtigen Vertiefung ist, so dass das Problem von hier kommen muß.

Params

Sie definieren article_params Methode aber article.params nennen. Das ist wahrscheinlich ein anderes Problem.

Private Methoden

Jede Methode, die definiert ist nach private Stichwort privat ist. Nicht nur article_params sondern auch show und index, in Ihrem Fall. Ich denke, dass die letzten zwei öffentlich sein sollten (d. H. Über private Schlüsselwort).

+0

der Kommentar über Methoden nach privaten es behoben. Ich sehe, was du da gesagt hast, das macht jetzt so viel Sinn. Ich danke dir sehr! –

+0

Bitte markieren Sie Ihre Frage als beantwortet, wenn dies Ihr Problem gelöst hat. – toughskin

Verwandte Themen