ArticlesController#show中的什么是NoMethodError?什么是未定义的方法`category_id'为nil:NilClass?

时间:2017-11-05 09:58:57

标签: ruby-on-rails error-handling

我正在尝试显示属于特定类别的文章,但我得到nil的未定义方法'category_id':当我点击类别显示页面中的文章时出现NilClass错误....该怎么办?有人帮我enter image description here

1 个答案:

答案 0 :(得分:1)

当object为nil时,如果你试图访问nil对象的值,那么它会抛出undefined_method错误。

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

if (str1[i] == '\0' || str2[i] == '\0')

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

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

而不是

/articles/:slug

更改路线

/articles/:id

在终端检查路线是否正确

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

而不是id它应该slug

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