2013-06-18 9 views
65

Ich versuche, einige Konfigurationsvariablen in Yaml als ein assoziatives Array aka-Wörterbuch dargestellt zu speichern. Hier ist, wie ich getan habe:Wie mache ich eine Liste von assoziativen Array in Yaml

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

Diese eine Ausnahme erzeugen, wenn ich versuche, es von meinen ROR init-Dateien zu analysieren:

nicht definierte Methode `symbolize_keys‘ für nil: NilClass

Hier ist, wie ich es init:

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

Ich denke, meine yaml Syntax falsch ist, dann wie man es richtig schreiben?

+2

Ich sehe Abschnitte nicht für Schienen ENVs in Ihrem YAML –

Antwort

138

Ihr YAML sieht okay, oder Sie können ein Array von Hashes wie folgt konfiguriert werden:

content_prices: 
    - country: AU 
    price: 6990000 
    - country: AT 
    price: 4990000 
    - country: BE 
    price: 4990000 

, die als die folgenden Hash-laden werden:

{"content_prices"=>[ 
    {"country"=>"AU", "price"=>6990000}, 
    {"country"=>"AT", "price"=>4990000}, 
    {"country"=>"BE", "price"=>4990000}]} 

Aber das noch nicht gibt Ihnen jede Bezugnahme auf die Rails.env im Haupt-Hash. Das Problem scheint zu sein, was Sie erwarten, in Ihrem Hash und nicht im Format des YAML zu sein.

10

Nicht auf Schienen, sondern auf Symfony2 php, hatte ich die yml Datei wie folgt zu konfigurieren:

 
content_prices: 
    - 
    country: AU 
    price: 6990000 
    - 
    country: AT 
    price: 4990000 
    - 
    country: BE 
    price: 4990000 
+6

Dies ist ein Problem mit dem symfony-Parser das nicht die Spezifikation von Listen respektiert, es sei denn, es gibt einen Zeilenumbruch nach dem Bindestrich – dreftymac

+0

@dretymac wird dieses Problem jetzt behoben? Könnten Sie einen Link zum Fehlerbericht geben? – marcv

+0

@marcv Wenn mein Gedächtnis mir richtig dient, wurde es behoben – dreftymac

Verwandte Themen