articles_controller.rb:26:语法错误,意外的输入结束,期待keyword_end

时间:2017-01-22 21:51:33

标签: ruby-on-rails ruby

我是Ruby on Rails的新手。我试图通过制作简单的博客来学习指南。当尝试访问localhost时,会在标题中显示错误。我确信这是一个简单的解决方案,我现在无法看到它。谢谢!

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 个答案:

答案 0 :(得分:4)

压痕

如果您的文本编辑器无法自动缩进代码,请使用另一个!

如果您的文本编辑器可以缩进代码,请使用它;)

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

您可以看到def create是具有正确缩进的最后一个方法定义,因此问题必须来自此处。

PARAMS

您定义article_params方法,但请致电article.params。这可能是另一个问题。

私有方法

private关键字之后定义的任何方法都是私有的。在您的情况下,不仅article_params而且showindex。我猜最后两个应该是公开的(即private个关键字以上)。

答案 1 :(得分:2)

end操作中添加create个字词。那必须工作

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