2013-06-18 47 views
65

我试图在yaml中存储一些配置变量,表示为关联数组又名字典。 这里是我做的事:如何在yaml中创建关联数组的列表

content_prices:                                                        
    - {country: AU, price: 6990000}                                                    
    - {country: AT, price: 4990000}                                                    
    - {country: BE, price: 4990000} 

这产生一个异常时,我试图从我的ROR初始化文件解析它:

未定义的方法`symbolize_keys”对于零:NilClass

这里是如何我初始化它:

Config = YAML.load_file("#{Rails.root}/config/prices.yml")[Rails.env].symbolize_keys! 

我想我的YAML语法是错误的,那么如何将其写正确?

+2

我没有看到铁轨ENVS部分在YAML –

回答

138

你YAML看起来不错,也可以配置哈希像这样的数组:

content_prices: 
    - country: AU 
    price: 6990000 
    - country: AT 
    price: 4990000 
    - country: BE 
    price: 4990000 

将加载如下面的哈希:

{"content_prices"=>[ 
    {"country"=>"AU", "price"=>6990000}, 
    {"country"=>"AT", "price"=>4990000}, 
    {"country"=>"BE", "price"=>4990000}]} 

但仍然不给你在主散列中对Rails.env的任何引用。问题似乎是你期望在你的哈希而不是YAML的格式。

10

不上轨,但Symfony2的PHP,我不得不配置YML文件是这样的:

 
content_prices: 
    - 
    country: AU 
    price: 6990000 
    - 
    country: AT 
    price: 4990000 
    - 
    country: BE 
    price: 4990000 
+6

这是symfony的解析器的问题那不符合列表的规范,除非破折号后面有一个换行符 – dreftymac

+0

@dreftymac现在是否解决了这个问题?你能给出一个链接到错误报告吗? – marcv

+0

@marcv如果我的记忆正确地为我服务,它已被修复 – dreftymac