I am trying to loop on an Array of Hashes. When I reach the point where I fetch the Enumerator to start looping, I get the following error:
undefined method `[]' for nil:NilClass
My code looks like the following:
def extraireAttributs (attributsParam)
classeTrouvee = false
scanTrouve = false
ownerOSTrouve = false
ownerAppTrouve = false
resultat = Hash.new(0)
attributs = Array(attributsParam)
attributs.each do |attribut| #CRASHES HERE!!!
typeAttribut = attribut['objectTypeAttribute']
[...]
I checked in debug mode to make sure the attributsParams
argument and the attributs
variable are not nil or empty. Both (because they are the same!) contain 59 Hashes objects, but I still cannot get an Enumerator on the Array.
Why do I keep on getting this error?
Thanks!
undefined method `[]' for nil:NilClass
says you tried to dosomething[index]
butsomething
isnil
. Ruby won't let you usenil
as an array (ie. call the[]
method on it).The problem is not on the
attributs.each
line but on the line following which calls the[]
method onattribut
.This indicates something in
attributs
is nil. This could happen ifattributsParam
is a list that contains nil like so.Simplest way to debug it is to add
puts attributs.inspect
just before the loop.Also consider if you really need the
attributs = Array(attributsParam)
line or if it's already something Enumerable.