2016-05-31 4 views
0

Как я могу перебирать массив, вложенный как значение внутри объекта JSON? Это будет отображаться в файле .html.erb.Как выполнить итерацию через вложенный массив в объекте JSON (Rails)

Это приводит к отображению фактического массива в представлении.

<% @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" 
    }, 
] 

Кто-нибудь успешно реализован это с JSON в шаблоне Rails раньше?

ответ

1

Вы разбирали JSON раньше в контроллере/службе с помощью JSON.parse? Я спросил, потому что это странный случай, когда у вас есть пустой y["cars"] в массиве ... в некоторых случаях ...

Если да окурок nil значение для :cars, если он пуст с пустым массивом []:

<%- (y["cars"] || []).each do |z| %> 
    <%= z["make"] %> 
    <%= z["value"] %> 
<%- end %> 

и сделайте лучше с декоратором (см. draper gem).

+0

Stubbing работал. Удивительно! нужно понять, как это сработало сейчас .. –

Смежные вопросы