2016-03-25 6 views
1

Ich erhalte den Fehler 'falsche Anzahl von Argumenten (2 für 1)', wenn Sie ein Tutorial online versuchen. Ich bin komplett neu in Rails und versuche nur, durch den Guide zu folgen.Falsche Anzahl von Argumenten (2 für 1) - Rails - vielleicht starke Parameter

Mein Controller ist:

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

def new 

end 

def create 
    @article = Article.new(article_params) 

    @article.save 
    redirect_to @article 
end 

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

end 

Meine Datenbank-Code ist:

class CreateArticles < ActiveRecord::Migration 
    def change 
    create_table :articles do |t| 
    t.string :title 
    t.text :text 

    t.timestamps null: false 
    end 
    end 
end 

Die Parameter gegeben sind:

{"utf8"=>"✓", "authenticity_token"=>"JfpQBSnxU8O839o5YjbZV11TMAWTPgaok1/skSEoGlchdGCulmJuGxFdyj7lUK6WIfrLddCZAaWxOkxRaNqlTA==", 
"article"=>{"title"=>"hello world", 
"text"=>"hello olivia"}, 
"commit"=>"Save Article"} 

Jede Hilfe wird sehr geschätzt :)

+0

hey, können Sie den Fehler zeigen Sie bitte erhalten. –

+0

Hey ja, es ist ArgumentError in ArticlesController # create – OEThorne

+0

Stack Fehlerspur bitte? – archana

Antwort

0

Wenn Sie diesen Code versuchen , wird es einen Fehler in der Konsole ausgeben?

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

    def new 

    end 

    def create 
     @article = Article.new(article_params) 

     if @article.save 
      redirect_to article_path(@article) 
     else 
      logger.warn(@article.errors) 
      render "new" 
     end 
    end 

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

    end 
+0

Es werden keine neuen Fehler in der Konsole gedruckt. – OEThorne

+0

Haben Sie versucht, [pry] (https://github.com/rweng/pry-rails) oder byebug zu verwenden? – Louis

0

Das Problem liegt wahrscheinlich daran, dass Sie @ article.save nicht in einem if-Block aufrufen. Sie rufen @ article.save auf und rufen dann eine Weiterleitung auf. Versuchen mit:

if @article.save 
    redirect_to @article 
else 
    render :new 
end 
+0

Versucht dies, aber immer noch den gleichen internen Serverfehler. – OEThorne

+0

Können Sie den tatsächlichen Fehler anzeigen? – hashrocket

+0

Versuchen Sie auch, @article = Article.new zu Ihrer neuen Methode hinzuzufügen. – hashrocket

Verwandte Themen