web-dev-qa-db-ja.com

yamlで連想配列のリストを作成する方法

連想配列または辞書として表されるyamlにいくつかの設定変数を保存しようとしています。ここに私がやった方法があります:

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

ROR initファイルから解析しようとすると、例外が発生します。

未定義のメソッド `symbolize_keys! ' nil:NilClassの場合

ここに私がそれを初期化する方法があります:

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

私のyaml構文が間違っていると思いますが、それを正しく書く方法は?

72
Antzi

あなたの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の形式ではなく、あなたがハッシュに入れることを期待しているもののようです。

150
Shadwell

Railsではなく、Symfony2 phpで、ymlファイルを次のように設定する必要がありました。

 content_prices:
-
国:AU 
価格:6990000 
-
国:AT 
価格: 4990000 
-
国:BE 
価格:4990000 
12
sinhix

誰かが動的キーを使用したい場合に備えて、次のことも可能です。

AppBundle\Service\MailerService:
    lazy: false
    arguments:
      $defaultFrom:
        '%mailer_user%': '%mailer_name%'
0
GrumpyHat