2012-01-10 54 views
10

例哈希獲取哈希鍵轉換成字符串紅寶石

hash = {:key => ["val1", "val2]} 

當我做這個軌道上3.0.7,這是罰款。

> hash.keys.to_s 
=> "key" 
> hash[hash.keys.to_s] 
=> ["val1", "val2"] 

但是,如果我這樣做與軌道3.1.3,它不是。

> hash.keys.to_s 
=> [\"key\"] 
> hash[hash.keys.to_s] 
=> nil 

這是因爲Rails版本改變了嗎?是否有任何其他方法可以將散列鍵變成可與兩個版本(或者同樣使用rails 2)一起使用的字符串?

+1

Fwiw,目前的行爲是更正確的,回答很大程度上是不言而喻的:「鑰匙」是複數,應該是一個集合。 – 2012-01-10 19:21:15

+0

是的戴夫,我應該注意到這一點。感謝您的提醒 !!! – 2012-01-11 09:03:32

回答

15

您是否升級了Ruby以及Rails?我認爲這是一個變化的嘗試hash.keys.first.to_s 1.8和1.9

之間

(如果有永遠只有一個鍵)或 hash.keys.join

+0

啊,是的。我忘了告訴你他們是[email protected]和[email protected] – 2012-01-11 04:01:08

+0

你的答案都有效。 Thx隊友! – 2012-01-11 04:08:44

3

您只需將其轉換爲一個符號,而不是它是更正確的字符串:

hash[hash.keys.to_sym] 
+0

Thx的答案,但它不適用於Ruby 1.9.2,Rails 3.1.3。 hash.keys.to_sym將顯示錯誤,未定義方法'to_sym'爲[:key]:Array – 2012-01-11 04:03:42