我有一个YAML文件,包含:
---
:feeds:
-
title: "Breaking News"
url: "http://www.nasa.gov/rss/dyn/breaking_news.rss"
-
title: "Education News"
url: "http://www.nasa.gov/rss/dyn/educationnews.rss"
-
title: "Space Station News"
url: "http://www.nasa.gov/rss/dyn/shuttle_station.rss"
我的ruby文件包含:
require 'yaml'
config = YAML.load_file('settings.yml')
feeds = config[:feeds]
feeds.each do |entry|
puts "Title: #{entry[:title]}"
end
我期待看到的是"标题:突发新闻",例如。然而,输出只是简单地把标题:"标题:"。我相信哈希有一个错误,但尝试了很多东西,我只是在猜测。我在这里搜索过类似的问题,但无法找到相关内容。可能是因为这对我来说是一个简单的误解。
答案 0 :(得分:2)
内部哈希的键是字符串,而不是符号。您正在尝试查找不存在的entry[:title]
- 您应该使用entry['title']
:
feeds.each do |entry|
puts "Title: #{entry['title']}"
end
或者你可以在你的yaml中使用符号(你已经为:feeds
键执行此操作):
---
:feeds:
-
:title: "Breaking News"
:url: "http://www.nasa.gov/rss/dyn/breaking_news.rss"
-
:title: "Education News"
:url: "http://www.nasa.gov/rss/dyn/educationnews.rss"
-
:title: "Space Station News"
:url: "http://www.nasa.gov/rss/dyn/shuttle_station.rss"