Yaml में साहचर्य सरणी की सूची कैसे बनाएं


83

मैं कुछ विन्यास चर को स्टोर करने की कोशिश कर रहा हूं जो एक साहचर्य सरणी उर्फ ​​शब्दकोश के रूप में दर्शाया गया है। यहाँ है मैं कैसे किया:

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

जब मैं अपनी ROR init फ़ाइलों से इसे पार्स करने का प्रयास करता हूं तो यह एक अपवाद उत्पन्न करता है:

अपरिभाषित विधि `symbolize_keys! नील के लिए: NilClass

यहां बताया गया है कि मैं इसे कैसे करता हूं:

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

मुझे लगता है कि मेरा यम वाक्यविन्यास गलत है, फिर इसे ठीक से कैसे लिखा जाए?


2
मुझे आपके
YAML

जवाबों:


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:
  - 
    देश: ए.यू.
    कीमत: 6990000
  - 
    देश: एटी
    कीमत: 4990000
  - 
    देश: बी.ई.
    कीमत: 4990000

6
यह सिम्फनी पार्सर के साथ एक मुद्दा है जो सूचियों के विनिर्देश का सम्मान नहीं करता है जब तक कि डैश के बाद एक नई रेखा नहीं होती है
dreftymac

@dreftymac क्या यह मुद्दा अब ठीक किया गया है? क्या आप बग रिपोर्ट का लिंक दे सकते हैं?
7

@marcv यदि मेरी स्मृति मुझे सही ढंग से कार्य करता है यह तय किया गया था
dreftymac

0

यदि कोई व्यक्ति गतिशील कुंजियों का उपयोग करना चाहता है, तो यह भी संभव है:

AppBundle\Service\MailerService:
    lazy: false
    arguments:
      $defaultFrom:
        '%mailer_user%': '%mailer_name%'
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.