2013-06-18 50 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