yaml에서 연관 배열 목록을 만드는 방법


83

연관 배열 일명 사전으로 표시된 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 구문이 잘못된 것 같습니다. 그러면 올바르게 작성하는 방법은 무엇입니까?


2
나는 당신의 YAML에 레일 envs에 대한 섹션을 참조하지 않습니다
세르지오 Tulentsev에게

답변:


163

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의 형식이 아니라 해시에있을 것으로 예상되는 것 같습니다.


나는이 인라인 접근 방식, 생각 key: - string1, key: ['string1', 'string2',이것은 현대적인 객체 위의 구문가 승인되지 연관에 대한 표기법입니다 - { param1: 'myvalue', param2: 'myvalue2' } stackoverflow.com/a/33136212/3419535 , stackoverflow.com/a/49814618/3419535
FantomX1

12

레일이 아니라 Symfony2 php에서 다음과 같이 yml 파일을 구성해야했습니다.

content_prices :
  - 
    국가 : AU
    가격 : 6990000
  - 
    국가 : AT
    가격 : 4990000
  - 
    국가 : BE
    가격 : 4990000

6
이것은 대시 뒤에 줄 바꿈이 없으면 목록의 사양을 존중하지 않는 심포니 파서의 문제입니다
dreftymac 2015 년

@dreftymac이 문제가 지금 해결 되었습니까? 버그 보고서에 대한 링크를 제공 할 수 있습니까?
marcv

내 기억이 제대로 날 서비스를 제공하는 경우 @marcv 그것은 고정
dreftymac

0

누군가가 동적 키를 사용하려는 경우에도 가능합니다.

AppBundle\Service\MailerService:
    lazy: false
    arguments:
      $defaultFrom:
        '%mailer_user%': '%mailer_name%'
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.