2013-04-27 98 views
0

在erb模板中,我访问一个元素(item.attributes[:Post]),它是一个散列。erb中的嵌套哈希表访问

我通过打印

<%= (item.attributes[:Post]).class %> => Hash 

验证了其I类可以调用它

<%= (item.attributes[:Post]).methods %> => works as expected 

一般方法,但我不能访问任何哈希特定的功能。

<%= (item.attributes[:Post]).count %> => NoMethodError: undefined method `count' for nil:NilClass 

你知道为什么吗?

回答

3

尝试打印值为p item.attributes[:Post])nilnilNilClass的一个实例,它没有count方法。

nil.methods.include? :count #=>false 
+0

啊我明白我叫TWICE,曾经有一个Nil对象,曾经有一个数组!这就是为什么只有非常通用的功能工作... – nicolas 2013-04-27 14:35:25

+0

@nicolas看你提到的项目的错误。属性[:Post]).class'应该是'Nilclass',但你如何得到'Hash'? :) – 2013-04-27 14:39:42

+0

因为我被调用两次,出于某种原因:一个与正确的对象,我设置有这样的散列。和另一次我得到交出另一种类型的项目,从我不知道在哪里,哪些不包含:Post – nicolas 2013-04-27 14:50:36