一个非常简单的问题,但我似乎无法让它发挥作用。
下面只包含一个Property
,但Properties
内可能有多个Name
。如何迭代此哈希并仅显示每个Property
的{{1}}?
{"GetPropertiesResponse"=>{"Properties"=>{"Property"=>{"Breakfast"=>"IN", "Country"=>"GB", "Currency"=>"GBP", "Id"=>"1834", "Name"=>"Hotel Name"}}}}
我在我看来试过这个:
<% @json['GetPropertiesResponse']['Properties']['Property'].each do |property| %>
<%= property['Name'] %>
<% end %>
我收到了这个错误:
没有将String隐式转换为整数
答案 0 :(得分:0)
如果您说可能有多个property
哈希,那么这应该有效:
<% @json['GetPropertiesResponse']['Properties'].each do |property, value| %>
<%= value['Name'] %>
<% end %>
答案 1 :(得分:0)
我会在此哈希上使用#each_value
,因为您似乎没有使用密钥
<% @json['GetPropertiesResponse']['Properties'].each_value do |value| %>
<%= value['Name'] %>
<% end %>
应该有效。请注意,第二行是<%= value['Name'] %>
而不是 <%= property['Name'] %>
P.S。另外一点,我不知道你为什么要使用密钥&#34; Property&#34;在您的属性哈希中。这似乎是一种以这种方式迷惑自己的好方法。属性哈希中的键应该是它们描述的属性的唯一键。由于每个都是一个属性,字符串&#34;属性&#34;没有帮助描述或区分。