user6781613
user6781613

Reputation:

Why am I getting undefined method error ruby?

require "rubygems"
require "json"
require "net/http"
require "uri"

uri = URI.parse("https://api.website.com/top/inside/end")

http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Get.new(uri.request_uri)
http.use_ssl = true
response = http.request(request)

if response.code == "200"
  result = JSON.parse(response.body)
  names = Array.new
  i = 0
  result.each do |doc|
    names.insert(i, doc.name)
    puts doc["id"] #reference properties like this
    puts doc # this is the result in object form    
    puts ""
    puts ""

  end

  puts names
else
  puts "ERROR!!!"
end

Why am I getting undefined method error on variable names inside the for each loop? I cannot understand why

script.rb:18:in `block in ': undefined method `name' for #<Hash:0x0000000002e04c08> (NoMethodError)

Upvotes: 0

Views: 99

Answers (1)

Faizal Zakaria
Faizal Zakaria

Reputation: 31

line 18,

names.insert(i, doc.name)

doc is a Hash, doc['name'] should works.

in javascript, you can do

doc.name

Upvotes: 2

Related Questions