我有一些看起来像这样的JSON。我将它存储并读入一个对象@items。
[
{
{
"id": "A",
"description": "a_description"
},
{
"id": "B",
"description": "b_description"
}
},
{
{
"id": "A",
"description": "a_description"
},
{
"id": "B",
"description": "b_description"
}
}
]
我的目标是显示一个包含两列的表,一列标记为A,另一列标记为B,其中每一行都给出“a_description”和“b_description”。我不知道该怎么做。
答案 0 :(得分:2)
这样的事可能
<tr><th>A</th><th>B</th></tr>
<% @items.each do |item| %>
<tr><td><%=item[0].description%></td><td><%=item[1].description%></td></tr>
<% end %>
答案 1 :(得分:2)
绕过你的&#34;故障&#34;你首先要转换的问题
{
"id": "A",
"description": "foo"
},
{
"id": "B",
"description": "bar"
}
进入{"A" : "foo", "B" : "bar" }
。
@new_items = @items.map do |item|
output = {}
item.each do |hash|
output.merge!(hash["id"] => hash["description"])
end
end
然后@new_items
变为(故意按顺序呈现,因为哈希元素没有被排序)
[
{
"A": "a1_description",
"B": "b1_description"
},
{
"B": "b2_description",
"A": "a2_description"
}
]
从那里开始,每一行都只是一个哈希值,因此您可以根据您所在的列取消引用所需的值。
@new_items.each do |item|
puts "#{item['A']} is paired with #{item['B']}"
end
当然,如果你不想硬编码,可以动态检索密钥&#34; A&#34;和&#34; B&#34;使用.keys