1. ホーム
  2. ruby-on-rails

[解決済み] yamlで連想配列のリストを作成する方法

2023-01-28 18:43:03

質問

私はいくつかの設定変数を連想配列、別名辞書として表現されるyamlに格納しようとしています。 以下は私が行った方法です。

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

これはROR initファイルから解析しようとすると例外を生成します。

nil:NilClassに対して未定義のメソッド`symbolize_keys!

以下は、私がinitした方法です。

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

yamlの文法がおかしいと思うのですが、どうすれば正しく書けますか?

どのように解決するのですか?

あなたの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のフォーマットというよりも、ハッシュに何を期待しているかにあるようです。