如何迭代嵌套为JSON对象内的值的数组?这将在.html.erb
文件中呈现。
这导致在视图中显示实际数组。
<% @data.each do |y| %>
<%= y["name"] %>
<%= y["location"] %>
<%= y["cars"] %>
<%= y["married"] %>
<% end %>
这会产生undefined method 'each' for nil:NilClass
。
<% @data.each do |y| %>
<%= y["name"] %>
<%= y["location"] %>
<% y["cars"].each do |z| %>
<%= z["make"] %>
<%= z["value"] %>
<% end %>
<%= y["married"] %>
<% end %>
JSON
[
{
"name":"Jim",
"location":"London",
"cars": [
{
"make":"Audi",
"value":"100k"
}
],
"married": "Y"
},
{
"name":"Sarah",
"location":"New York",
"cars": [
{
"make":"Ferrari",
"value":"200k"
},
{
"make":"Lambo",
"value":"350k"
}
],
"married": "Y"
},
]
之前是否有人在Rails模板中使用JSON成功实现了这个?
答案 0 :(得分:1)
您是否在使用JSON.parse
的控制器/服务之前解析了JSON?我问,因为当你在数组中有空y["cars"]
时,这是奇怪的情况......在某些情况下......
如果是nil
,则为:cars
,如果它为空,且数组为[]
,则为<%- (y["cars"] || []).each do |z| %>
<%= z["make"] %>
<%= z["value"] %>
<%- end %>
:
draper
并使用装饰器做得更好(参见MyGame.
gem)。