来自.yml文件的put有问题

时间:2015-03-20 03:26:12

标签: ruby yaml

我有一个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

我期待看到的是"标题:突发新闻",例如。然而,输出只是简单地把标题:"标题:"。我相信哈希有一个错误,但尝试了很多东西,我只是在猜测。我在这里搜索过类似的问题,但无法找到相关内容。可能是因为这对我来说是一个简单的误解。

1 个答案:

答案 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"