如何遍历JSON对象中的嵌套数组(Rails)

时间:2016-05-31 21:12:24

标签: ruby-on-rails json

如何迭代嵌套为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成功实现了这个?

1 个答案:

答案 0 :(得分:1)

您是否在使用JSON.parse的控制器/服务之前解析了JSON?我问,因为当你在数组中有空y["cars"]时,这是奇怪的情况......在某些情况下......

如果是nil,则为:cars,如果它为空,且数组为[],则为<%- (y["cars"] || []).each do |z| %> <%= z["make"] %> <%= z["value"] %> <%- end %>

draper

并使用装饰器做得更好(参见MyGame. gem)。