2014-01-15 192 views
0

我有這個哈希。從哈希獲得價值

[#<PartnerSite id: 20, site_name: "test123", user_id: 178, 
       market_id: 164, created_at: "2014-01-15 18:02:01", 
       updated_at: "2014-01-15 18:02:01", 
       ip_address_range: "50.19.93.173", 
       public_key: "453df9eeeb4a2d85bb7ffeb85486d489">] 

,我試圖訪問值使用

partner_site[public_key] 
partner_site.public_key 

但它顯示像

  1. undefined local variable or method 'public_key'
  2. undefined method `public_key'誤差分別。
+0

等待,什麼查詢給你'未定義的方法'site_name''?你不是指'未定義的方法'public_key''? – Ajedi32

+0

是不是一個activerecord對象? – beck03076

+0

@ Ajedi32-對不起.....我的意思是'public_key' – user3067558

回答

2

首先,看起來像包含一個PartnerSite對象,而不是一個數組哈希值。因此,您需要獲得數組中的第一個對象first(例如partner_site = partner_site.first),或者使用each遍歷數組中的所有元素,然後對所有元素執行一些操作。

其次,當使用[]表單訪問值時,通常需要爲[]方法提供符號或字符串。在partner_site[public_key],public_key引用一個未定義的變量。相反,你應該做partner_site[:public_key]partner_site["public_key"]

您的其他形式,partner_site.public_key不起作用,因爲無論你調用public_key的陣列,而不是PartnerSite對象(在這種情況下,看到這個答案第一段),或因爲PartnerSite沒有#public_key方法在其上定義。在第二種情況下,您可以通過將attr_accessor :public_key添加到PartnerSite類中來修復該問題。

+0

非常感謝你.. – user3067558

1

您正在調用一個不存在的變量(public_key)。使用symbol來代替:

partner_site[:public_key] 

如果你想找出爲什麼符號作爲哈希鍵,請參閱本question