2012-01-10 55 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