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

레일 버전이 변경 되었기 때문입니까?해시 키를 두 버전 모두에서 작동하는 문자열 (또는 레일 2도 포함)로 변환하는 다른 방법이 있습니까?

+1

Fwiw, 현재의 동작이 더 정확하며 응답은 크게 자명합니다. "키"는 복수형이며 모음이어야합니다. –

+0

예 데이브, 나는 그것을 알아 차려야한다. 알림 주셔서 감사합니다! –

답변

15

Ruby와 Rails를 업그레이드 했습니까? 나는 이것이 당신은 단순히 대신 더 정확한되고있는 문자열의 상징으로 변환 할 필요가 (항상 하나의 키가 있다면) hash.keys.first.to_s을 시도

1.8 사이에 1.9 변경이나 hash.keys.join

+0

아, 네. 나는 그들이 [email protected]이고 [email protected]이라고 말한 것을 잊었습니다. –

+0

당신의 대답은 모두 작동합니다. Thx 친구! –

3

생각 :

+0

대답은 Thx이지만 Ruby 1.9.2, Rails 3.1.3에서는 작동하지 않습니다. hash.keys.to_sym이 표시되고 오류가 발생합니다. [: key] : Array에 대해 정의되지 않은 메소드 'to_sym' –

관련 문제