2013-08-19 20 views
9

Hash:metoda niezdefiniowany przy dostępie elementowi Hash

p: {:headline=>"Managing Director at Test company name", :pid=>"0tSsRvCR7r", :first_name=>"John", :last_name=>"Doe", :industry=>"Financial Services", :summary=>nil, :public_profile_url=>"http://www.linkedin.com/pub/john-doe/7a/78/606", :distance=>0} 

próbując wywołać p.pid ale otrzymuję błąd:

EXCEPTION: undefined method `pid' for #<Hash:0x007fcf1b3a29f0> 

Wszystkie pozostałe elementy można uzyskać grzywny. Próbowałem również różnych nazw dla tego pola, ale bez skutku. Czy ktoś może rzucić trochę światła na to? Naprawdę mam nadzieję, że nie jest to jeden z tych błędów, na które patrzysz od dawna, tylko po to, by zdać sobie sprawę, że to coś głupiego: /.

Uwaga: Próbowałem również p ['pid']. To też nie działa. Stosunkowo nowy w Railsach.

+2

użyć 's [: pid]' dla mieszań z HashWithIndifferentAccess można użyć symbolu: PID lub ciąg " pid ', aby uzyskać dostęp do wartości: 'p [' pid ']' lub 'p [: pid]' powinno działać dla HashWithIndifferentAccess – MrYoshiji

Odpowiedz

19

Spróbuj czegoś takiego:

p = {:headline=>"Managing Director at Test company name", :pid=>"0tSsRvCR7r", :first_name=>"John",  :last_name=>"Doe", :industry=>"Financial Services", :summary=>nil,  :public_profile_url=>"http://www.linkedin.com/pub/john-doe/7a/78/606", :distance=>0} 
puts p 
puts p[:pid] 

hash docs

more on hashes

+0

Thank Youu !!!! Dużo! +1000 –

+3

To rozwiązuje problem, ale dlaczego na początku był to problem? Myślałem, że 'hash.key' i' hash [: key] 'są synonimami? – user1618143

+1

Niestety, nie otrzymujesz tych fajnych metod z hasza. Jeśli chcesz uzyskać dostęp do kluczy za pomocą metody, możesz użyć [OpenStruct] (http://ruby-doc.org/stdlib-2.3.0/libdoc/ostruct/rdoc/OpenStruct.html) ze standardowej biblioteki Ruby. –

Powiązane problemy