dimanche 28 juin 2015

Undefined method [] in Ruby

I am running Ruby 2.2.2 on Windows 7 Professional. I am trying to make a menu program that stores multiple menus in one array. I thought that I had succeeded, but I get the error message

Menu.rb:7:in 'block in load':undefined method '[]' for nil:NilClass (NoMethodError)

Here is my code:

#-Functions-#
def load(page)
    data = [["menu","Menu",[["obj1","Object 1",false],["exit","Exit",true]]],["obj1","Object 1",[["menu","Back",false],["exit","Exit",true]]],["exit","Exit",false]]
    itemNum = 0
    data.each do
        pageData = data[itemNum]
        if pageData[0] == page
            if pageData[2] == false
                send(page)
            else
                system "cls"
                puts
                puts " #{pageData[1]}"
                puts
                itemNum = 1
                pageData[2].each do
                    puts
                    puts "  #{itemNum}. #{pageData[2][itemNum-1][1]}"
                    itemNum += 1
                end
                puts
                puts
                print " Choice: "
                choice = gets.chomp.to_i
                load(pageData[choice-1][0])
            end
        end
        itemNum +=1
    end
end
def exit
    exit
end

#-Program-#
load("menu")

Aucun commentaire:

Enregistrer un commentaire