使用以下方法我无法将打印出来的哈希表打印到控制台,有人能指出我正确的方向吗
class FacebookFeed
#Constants
VANDALS_ID = ENV['VANDALS_FB_ID']
FB_ACCESS_TOKEN = ENV['FACEBOOK_ACCESS_TOKEN']
FACEBOOK_URL = "https://graph.facebook.com/#{VANDALS_ID}/posts/?access_token=#{FB_ACCESS_TOKEN}"
def get_feed
uri = URI(FACEBOOK_URL)
response = HTTParty.get(uri)
results = JSON.parse(response.body)
end
def formatted_data(results)
return unless results
results['data'].map { |m|
attrs = { message: m['message'],
picture: m['picture'],
link: m['link'],
object_id: m['object_id']
}.compact #remove entries that are nil
}
#PUTS ATTRS DOES NOT WORK FOR ME
end
end
由于
答案 0 :(得分:1)
您提供的代码段的问题是当您尝试访问它时attrs
超出范围。尝试在地图块之外(之前)声明attrs
。
答案 1 :(得分:1)
您需要在attrs
map
变量
def formatted_data(results)
return unless results
attrs = {}
results['data'].map do |m|
attrs[:message] = m['message']
attrs[:picture] = m['picture']
attrs[:link] = m['link']
attrs[:object_id] = m['object_id']
end
attrs
end
或更明确使用Object#tap方法:
def formatted_data(results)
return unless results
attrs = {}.tap do |acc|
results['data'].map do |m|
acc[:message] = m['message']
acc[:picture] = m['picture']
acc[:link] = m['link']
acc[:object_id] = m['object_id']
end
attrs
end
仅针对内置compact
Hash
中未提供的提示Ruby
方法,仅适用于Rails
。