2013-07-22 59 views
1

无法在索引视图,以呈现类别名称传递导轨 -

<%= post.category.name %> 

<% @posts.each do |post| %> 

错误时索引视图时出现错误渲染“类别”模型值:

undefined method `name' for nil:NilClass 

但是,当通过时

<%= post.category %> 

我得到

#<Category:0x007ff5c2c20b68> 

内的各个显示操作

<%= @post.category.id %> 

完美。可能是什么问题? 感谢

+0

这是非常微小的,断章取义的代码片段,避免错误。显示你的循环为'<%@ posts.each do | post | %>'。在那个循环中,如果'<%= post.category.name%>'指示一个'nil'类,那么就用'<%= post.category.name ||替换那行。 “发布ID#{post.id}没有类别”%>',看看你得到了什么。 – lurker

+0

你可以使用'try':'post.category.try(:name)'方法,如果帖子有一个链接到它的类别,它将显示该类别的名称。 – MrYoshiji

+0

谢谢! <%= post.category.try(:name)%>工作!为什么? –

回答

1

我认为,为atleast 1周后,类别为nil

您可以通过这种变化

<%= post.category.name if post.category %> 

<%= post.category.try :name %> 
+0

是的,一个职位确实缺少一个类别。谢谢。 –

0

看看那些在每一种情况下被调用的SELECT命令,你可以看到它在你的终端,你运行rails s

我怀疑是出于某种原因,在指数控制器,分类信息不与职位

一起检索如果你不知道什么是错的SELECT命令,张贴在这里一起套管都与控制器和模型