未定义的局部变量或方法`article_params&#39; for#<articlescontroller:0x007ff45cebd680>

时间:2016-04-27 22:41:02

标签: ruby

我在创建的页面出现问题。我得到的消息是上面的。这是我的文章controller.rb页面代码。学习红宝石及其带来的挑战。我被困在这一部分。并且我一直有关于section.once的问题我发布了我的代码。我不知道我是否搞砸了我的代码或类似的东西。

class ArticlesController&lt; ApplicationController中

def index
@articles = Article.all
end

  def new
 @article =Article.new
  end

  def edit
    @article = Article.new(article_params[:id])
  end



def create
   @article =Article.new(article_params)
   if@article.save
     flash[:notice] = "Article was successfully created"
   redirect_to article_path(@article)
     else
     render 'new'
   end
   end





 def update
      @article =Article.find(params[:id])
      if@article.update
        flash[:notice] = "Article was successfully updated"
        redirect_to article_path(@article)
    else
    render 'edit'



 end
end

def show



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

这是错误页面未定义的局部变量或方法`article_params&#39;对于#

提取的来源(第12行): 10 11 12 13 14 15

def编辑     @article = Article.new(article_params [:id])   端

i get on ruby rails

3 个答案:

答案 0 :(得分:1)

Yip,正如Alfie上面所说,你错过了你的article_params。 在轨道4(我假设是你正在使用的)中,存在强参数的概念,这是一种仅允许你期望通过的字段的方式。

取决于您的&#34;文章&#34;对象,你需要添加这样的东西:

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

注意,您需要调整它以适应您的实际字段。

此外,可能是副本&amp;粘贴错误,但是养成正确缩进代码的习惯是个好主意!祝你的代码工作顺利:)

答案 1 :(得分:0)

您需要在控制器中定义article_params

答案 2 :(得分:0)

您忘记将article_params传递给更新。

def update
    @article = Article.find(params[:id])
    if @article.update(article_params)
      flash[:notice] = 'Article was successfully updated'
      redirect_to article_path(@article)
    else
      redirect 'edit'
    end
  end