2013-05-03 56 views
0

我有一個嵌套散列我想給它賦值,但是ruby一直在抱怨它。將值分配給嵌套散列時遇到問題

哈希:

data = { 
    name: contact.xpath('./span[1]').text.delete("\r\n").strip, 
    email: contact.xpath('./a').text, 
    offices: [ 
     postal: contact.text.split("\r\n")[4].strip, 
     tel: /(\d{3}[-\.\s]??\d{3}[-\.\s]??\d{4}|\(\d{3}\)\s*\d{3}[-\.\s]??\d{4}|\d{3}[-\.\s]??\d{4})/.match(contact).to_s  
    ], 
    url: url 
} 

我的任務

data[:offices][:postal] = "" 

錯誤:

Line 42 - data[:offices][:postal] = "" -- in `[]=' 
#<TypeError: can't convert Symbol into Integer> 

我試過其他語法了一把,但無濟於事。任何幫助表示讚賞:)

+0

顯示您的數據哈希在這裏。 – 2013-05-03 18:33:21

回答

2
offices: [ 
     postal: contact.text.split("\r\n")[4].strip, 
     tel: /(\d{3}[-\.\s]??\d{3}[-\.\s]??\d{4}|\(\d{3}\)\s*\d{3}[-\.\s]??\d{4}|\d{3}[-\.\s]??\d{4})/.match(contact).to_s  
    ], 

這不是一個嵌套散列。使用大括號:

offices: { 
     postal: contact.text.split("\r\n")[4].strip, 
     tel: /(\d{3}[-\.\s]??\d{3}[-\.\s]??\d{4}|\(\d{3}\)\s*\d{3}[-\.\s]??\d{4}|\d{3}[-\.\s]??\d{4})/.match(contact).to_s  
    }, 
+0

謝謝@steenslag,方括號是什麼? – agarrow 2013-05-03 18:36:43

+0

閱讀文檔。 (捲曲)大括號用於哈希,(方形)括號用於數組。沒有「方括號」這樣的東西。 – sawa 2013-05-03 18:38:43

+0

值得一提的是,如果你使用方括號,Ruby會自動插入大括號,所以你最終將得到一個包含單個散列的單值數組。 – 2013-09-10 21:08:10