2014-01-06 81 views
0

一個很簡單的問題,但我似乎無法得到它的工作。Rails的環通哈希

只有一個Property下面包括在內,但可能有一個以上的內Properties。我怎樣才能通過這個哈希和顯示各PropertyName迭代?

{"GetPropertiesResponse"=>{"Properties"=>{"Property"=>{"Breakfast"=>"IN", "Country"=>"GB", "Currency"=>"GBP", "Id"=>"1834", "Name"=>"Hotel Name"}}}} 

我已經在我看來,嘗試這樣:

<% @json['GetPropertiesResponse']['Properties']['Property'].each do |property| %> 
    <%= property['Name'] %> 
<% end %> 

我得到這個錯誤:

字符串的隱式轉換成整數

+0

所以......你要接受一個答案?他們是否爲你工作? – Dylan

回答

0

如果你是說可能有不止一個property哈希那麼這應該工作:

<% @json['GetPropertiesResponse']['Properties'].each do |property, value| %> 
    <%= value['Name'] %> 
<% end %> 
+0

是的,我已經嘗試過,但屬性的名稱不輸出,我不明白爲什麼?雖然 – tommyd456

+0

沒有錯誤是否有錯誤或沒有輸出? – AbM

+0

no'property ['Name']'輸出,沒有錯誤 – tommyd456

0

我會用#each_value對這個散列,因爲你似乎沒有使用的按鍵

<% @json['GetPropertiesResponse']['Properties'].each_value do |value| %> 
    <%= value['Name'] %> 
<% end %> 

應該工作。請注意,第二行是<%= value['Name'] %>不是<%= property['Name'] %>

P.S.在不同的說明中,我不知道爲什麼你要在屬性哈希中使用關鍵「屬性」。這似乎是以這種方式迷惑自己的好方法。屬性哈希中的鍵應該是它們描述的屬性唯一的。由於每個屬性都是屬性,因此字符串「Property」無法描述或區分。