我乞求学习Rails上的ruby,并执行以下操作,收到以下错误:
ArticlesController#create中的NoMethodError
nil:NilClass的未定义方法“保存”
它与@ article.save有关
article_controllers.rb
class ArticlesController < ApplicationController
def new
@article = Article.new
end
def create
#render plain: params[:article].inspect
@article = Article.new(article_params)
@article.save
redirect_to articles_show(@article)
end
private
def article_params
params.require(:article).permit(:tittle, :description)
end
end
routes.rb
Rails.application.routes.draw do
root 'pages#home'
get 'about', to: 'pages#about'
resources :articles
end
new.html.erb
创建文章
<%= form_for @article do |f| %>
<p>
<%= f.label :tittle %><br>
<%= f.text_field :tittle %>
</p>
<p>
<%= f.label :description %> <br>
<%= f.text_area :description %>
</p>
<p>
<%= f.submit %>
</p>
<% end %>
最佳答案
undefined method `save' for nil:NilClass
此错误表示您正在NilClass对象(即
save
)上调用nil
方法。当您执行此操作时:
@article.save
,由于某种原因,@article
在此处为nil
,因此会出现该错误。确保填充@article
对象,然后调用:@article.save
。在尝试保存它之前,请检查Rails日志并放置一些调试打印信息,例如:
puts @article.inspect
。
关于ruby-on-rails - Controller 上nil:NilClass的未定义方法“保存”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34377789/