如何在yaml中创建关联数组列表

Ant*_*tzi 74 dictionary yaml associative-array ruby-on-rails

我试图在yaml中存储一些配置变量,表示为关联数组,也就是字典.我是这样做的:

content_prices:                                                                                                                                                                                                                               
  - {country: AU, price: 6990000}                                                                                                                                                                                                             
  - {country: AT, price: 4990000}                                                                                                                                                                                                             
  - {country: BE, price: 4990000}  
Run Code Online (Sandbox Code Playgroud)

当我尝试从我的ROR init文件解析它时会产生异常:

undefined方法`symbolize_keys!' 为零:NilClass

以下是我如何创建它:

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

我猜我的yaml语法错了,那怎么写得好呢?

Sha*_*ell 154

你的YAML看起来没问题,或者你可以像这样配置一个哈希数组:

content_prices:
  - country: AU
    price: 6990000
  - country: AT
    price: 4990000
  - country: BE
    price: 4990000
Run Code Online (Sandbox Code Playgroud)

哪个将加载为以下哈希:

{"content_prices"=>[
  {"country"=>"AU", "price"=>6990000}, 
  {"country"=>"AT", "price"=>4990000}, 
  {"country"=>"BE", "price"=>4990000}]}
Run Code Online (Sandbox Code Playgroud)

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


sin*_*hix 12

不是在轨道上,但在Symfony2 php上,我不得不像这样配置yml文件:

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

  • 这是symfony解析器的一个问题,它不遵守列表的规范,除非破折号后面有换行符 (6认同)