2013-06-18 25 views
65

İlişkisel değişkenler aka dictionary adlı temsilci olarak temsil edilen bazı yapılandırma değişkenlerini depolamaya çalışıyorum. İşte yaptım nasıl: Ben ROR init dosyalarından ayrıştırmak çalıştığınızdayaml içinde ilişkisel dizi listesi nasıl yapılır

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

Bu bir istisna üretmek:

tanımsız yöntem `symbolize_keys' nil için: NilClass

İşte

bunu init nasıl:

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

benim yaml sözdizimi yanlış olduğunu tahmin, o zaman nasıl düzgün yazmaya?

+2

Ben senin YAML –

cevap

138

Kişisel YAML tamam görünüyor, yoksa böyle karma bir dizi yapılandırabilirsiniz:

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

aşağıdaki karma olarak yükleyecektir:

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

Ama bu yine de vermez Ana karedeki Rails.env referansı. Sorun, YAML formatından ziyade sizin karmalarınızda olmasını beklediğiniz gibi görünüyor.

10
raylarda

değil, ama Symfony2'nin php üzerinde, böyle yml dosyasını yapılandırmak zorunda: Bu symfony ayrıştırıcı bir konudur

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

yılında raylar ENVS için bölümler görmüyorum – dreftymac

+0

@dreftymac işaretinden sonra yeni satır olmadıkça listelerin belirtimlerine uymuyorsa bu sorun giderildi mi? Hata raporuna bir link verebilir misiniz? – marcv

+0

@marcv Hafızam doğru bir şekilde bana hizmet ederse, düzeltildi – dreftymac