2013-10-02 20 views
2

我使用publicactivity gem來審覈我的應用程序中的活動。如何訪問紅寶石對象內的數組中的散列?

使用MongoDB,下面的數據都不是真實的 - 但代表真實的數據。

我猛在這樣一些數據:

"changes" : [ 
     { 
      "oldFirst" : "Aaron2", 
      "oldLast" : "Aardvark2", 
      "oldCity_id" : "Bogota, TN", 
      "oldZip_code" : 38007, 
      "oldPhone" : [ 
       "9993339999", 
       "4442224443" 
      ], 
      "oldStreet1" : "1111 Brighton Clopton St", 
      "oldStreet2" : "Suite 100", 
      "oldEmail" : [ 
       "[email protected]" 
      ], 
      "oldType" : "customer", 
      "oldLatitude" : "36.1625531", 
      "oldLongitude" : "-89.4362431", 
      "oldCust_notes" : "", 
      "oldAccount_id" : "" 
     }, 
     { 
      "newFirst" : "Aaron", 
      "newLast" : "Aardvark", 
      "newCity_id" : "Brighton, TN", 
      "newZip_code" : 38011, 
      "newPhone" : [ 
       "9993338888", 
       "4442223334" 
      ], 
      "newStreet1" : "1111 Brighton Clopton Dr.", 
      "newStreet2" : "", 
      "newEmail" : [ 
       "[email protected]" 
      ], 
      "newType" : "customer", 
      "newLatitude" : "35.4558615", 
      "newLongitude" : "-89.68162079999999", 
      "newCust_notes" : "", 
      "newAccount_id" : "" 
     } 
    ] 

那麼,如何談論這些元素呢?

我想:

<%= activity.changes[0]["oldFirst"] %> 
<%= activity.changes["oldFirst"] %> 
<%= activity.changes.oldFirst %> 
<% if activity.changes.any? 
    activity.changes.each do |c| 
%> 
<%= c["oldfirst"] %> 
<%end%> 
<%end%> 

上和我試過的組合,我知道 - 我得到這個:

no implicit conversion of String into Integer 

字符串成整數? WTF?這是所有字符串類型的數據,我試圖以字符串類型的數據訪問它 - 我不明白爲什麼它認爲我有或想要整數值。

我可以幫助嗎?

回答

0

你在這裏發佈的是一個JSON數據結構,而不是一個Ruby對象。

你必須先用JSON解析它,然後你可以通過訪問:

require 'json' 
activity = JSON.parse(json_string) 
activity.changes[0]["oldFirst"] 
+0

使用'JSON.parse(消息)' –

+1

無論你調用哪個變量持有JSON字符串 – Tilo

+0

這是行不通的。我知道它看起來像JSON,MongoMapper可能會返回一些它認爲是JSON的東西,但我在控制器和視圖層次上完全按照你的說法解析過,包含activity,activity.changes,activity.changes [0 ]等,這是行不通的。我推送的數據看起來像這樣,非常喜歡與JSON一起工作。相同的「沒有將字符串隱式轉換爲整數」錯誤消息。 – notaceo

1

原來我有一個數據庫中的一個不好的條目是這樣的:

[ [{},{}]]

很難看到終端中的雙括號,當它使用我使用的任何字體都相當緊密地砸在一起。

一旦單個條目被刪除,其餘留在原位能正常工作(格式像:[{},{}])

activity.changes [0] [ 「oldFirst」]