什么是文章控制器#显示中的NoMethodError ?nil:NilClass 的未定义方法"category_id"是什么?



我正在尝试显示属于特定类别的文章,但是当我单击类别显示页面中的文章时,我正在为nil:NilClass错误获得未定义的方法"category_id"。怎么办?有人帮我在这里输入图像描述

当对象为 nil 时,如果您尝试访问 nil 对象的值,则抛出undefined_method错误。

在这里@article对象为 nil,这就是它抛出错误的原因。

@article = Article.find_by(slug: params[:id])
@category = Category.find_by_id(@article.category_id) if @article

您在资源路由上使用 slug 而不是 id

/articles/:slug

而不是

/articles/:id

更改路线

# config/routes.rb
resources :articles, param: :slug

在终端检查您的路线是否正确

 $ rails routes | grep article
...
article GET    /articles/:id(.:format)      articles#show

而不是id,它应该蛞蝓

$ rails routes | grep article
...
article GET    /articles/:slug(.:format)      articles#show

最新更新