96

連想配列別名辞書として表されるyamlにいくつかの構成変数を保存しようとしています。これが私がした方法です:

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

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

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

これが私がそれを初期化する方法です:

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

私のyaml構文が間違っていると思いますが、それを正しく書くにはどうすればよいですか?

4

3 に答える 3

179

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

于 2013-06-18T16:16:02.417 に答える
14

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

content_prices:
  -
    国: オーストラリア
    価格: 6990000
  -
    国: で
    価格: 4990000
  -
    国: BE
    価格: 4990000
于 2015-06-10T14:43:24.500 に答える
0

誰かが動的キーを使用したい場合に備えて、それも可能です:

AppBundle\Service\MailerService:
    lazy: false
    arguments:
      $defaultFrom:
        '%mailer_user%': '%mailer_name%'
于 2019-04-17T16:21:55.930 に答える