我有一个对象,球,属于一个女孩,可以有很多球。一切都有效,但如果我试图通过以下方式打印出女孩的名字:
@balls.each do |b|
b.girl.name
end
我收到以下错误:
"undefined method `name' for nil:NilClass"
这让我很困惑。如果我说b.girl.class,我把它作为Girl的一个实例,就好了。也就是说,它不是“NillClass”。
不仅如此,如果我只是尝试任何Ball,并说
@ball.girl.name
我很好。
那些让我搞砸的球的集合是什么?
编辑:
具体而言,这种情况发生在我看来。我现在正在测试它是否也发生在控制器中。
答案 0 :(得分:5)
您的Ball
实例没有关联的Girl
。在访问girl
属性之前,您需要检查以确保nil
不是name
。
@balls.each do |b|
b.girl.name unless b.girl.nil?
end
答案 1 :(得分:1)
Dangit,好吧,没关系。问题在于,由于某种原因,一些Ball Object实际上没有女孩(尽管大多数都是这样的,所以我试过的任何给定的Ball工作得很好,但如果我试图完成所有这些,其中一个会失败,并且视图错误只让我知道出了什么问题,而不是在哪里)