据我所知,我们在方法new
def new
@article = Article.new
end
因为此变量也在new.html.erb
中使用。 (如果我错了,请纠正我。)
但为什么我们在create
方法中使用实例变量?它在create
方法之外的其他地方使用了什么?我们不能只使用局部变量article
而不是实例变量@article
吗?
def create
article = Article.new(article_params)
if article.save
flash[:success] = "Article created successfully!"
redirect_to articles_url
else
render 'new'
end
end
private
def article_params
params.require(:article).permit(:title, :body)
end
答案 0 :(得分:3)
这意味着您无法理解render :new
。
此行表示将呈现new
方法的视图,但不会调用方法本身。这就是为什么你需要变量作为实例变量的原因,因为如果验证失败,你将需要它将它传递给形式。
请查看guides以获取更多信息
PS render :new
与render 'new'
答案 1 :(得分:1)
您不能,因为@article
变量也用在new.html.erb
文件中,在article
未成功保存时呈现。
所以你会得到(据我记忆)错误undefined method 'model_name' for nil:NilClass
。