以下のコードに関して、ハッシュを誤解していると思います。
require 'rest-client'
require 'json'
def get_from_mashable
res = JSON.load(RestClient.get('http://mashable.com/stories.json'))
res["hot"].map do |story|
s = {title: story["title"], category: story["channel"]}
add_upvotes(s)
end
end
def add_upvotes(hash)
hash.map do |story|
temp = {upvotes: 1}
if story[:category] == "Tech"
temp[:upvotes] *= 10
elsif story[:category] == "Business"
temp[:upvotes] *= 5
else
temp[:upvotes] *= 3
end
end
hash.each {|x| puts x}
end
get_from_mashable()
これから次のエラーが発生します。
ex_teddit_api_news.rb:16:in `[]': no implicit conversion of Symbol into Integer (TypeError)
upvotes
の JSON オブジェクトから作成された各ハッシュに、キーと対応する整数値を追加しようとしていますget_from_mashable
。ループでは、各ハッシュの内容を消去して新しいキーと値のペアだけに置き換えようとしているわけではありません。
どんな助けでも大歓迎です。