我尝试使用Getting Started with Rails学习一些Rails基础知识,但我似乎无法传递错误:
undefined method `title' for nil:NilClass
Showing /blog/app/views/articles/show.html.erb where line #3 ...
我有Ruby 1.9.3和Rails 4.1.0。
我的 views / articles / show.html.erb 如下所示:
<p>
<strong>Title:</strong>
<%= @article.title %> # line #3
</p>
<p>
<strong>Text:</strong>
<%= @article.text %>
</p>
我的 controllers / articles_controller.rb 看起来像这样:
class ArticlesController < ApplicationController
def index
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
def new
end
def show
@article = Article.find(params[:id])
end
end
每当我尝试通过 / articles / new
创建新帖子时,都会弹出错误答案 0 :(得分:6)
您面临的主要问题是您的新&amp; show方法是私密的,因为它们来自私人&#39;你班上的宣言。
移动新代码和代码显示在您班级中的私人声明之上,您应该让事情发挥作用。此外,将文章参数传递给show for show,因为您正在使用强参数。
class ArticlesController < ApplicationController
def index
end
def create
@article = Article.new(article_params)
@article.save
redirect_to @article
end
def new
end
def show
@article = Article.find(article_params)
end
private
def article_params
params.require(:article).permit(:title, :text)
end
end
答案 1 :(得分:0)
检查文章是否已创建 - 因为它是nil:NilClass我想请注意。
尝试在新方法中添加以下内容:
def new
@article = Article.new
end
如果仍然无法解决问题,请发布新视图&amp;保存项目时的服务器输出。