我是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
答案 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
是具有正确缩进的最后一个方法定义,因此问题必须来自此处。
您定义article_params
方法,但请致电article.params
。这可能是另一个问题。
private
关键字之后定义的任何方法都是私有的。在您的情况下,不仅article_params
而且show
和index
。我猜最后两个应该是公开的(即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