Рубиновые рельсы Как я могу получить значения из массива в массиве в массиве? - PullRequest
0 голосов
/ 13 декабря 2018

Я хочу получить значения из массива JSON, которые я могу назначить столбцу таблицы, однако одно из нужных мне значений находится в массиве в массиве, в массиве.Например, массив сотрудников и для каждого сотрудника есть массив отделов, который содержит массив этажей.

{"employees": [{"name": "bob", "age": 20, "department": ["location": "head office", "floors":["ground", "basement"]], "grade": "supervisor"}]}

Имя и возраст отображаются, как и ожидалось, но я не уверен, как получить этажи.Я пробовал несколько способов, но я не могу получить "этажи".Это моя последняя попытка, но в строке @employee [: отдела] указано неверное преобразование строки в целое число.Может кто-нибудь посоветовать лучший способ получить это значение?Спасибо

@employees.each do |i|
 employee[:column1] = i[:name]
 employee[:column2] = i[:age]

 @employee[:department].each do |d|
  employee[:column3] = d[:floors]
 end
end

Ответы [ 2 ]

0 голосов
/ 13 декабря 2018

Вы можете попробовать это:

@employees.each do |e|
  employee[:column1] = e[:name]
  employee[:column2] = e[:age]
  employee[:column3] = e[:department].last[:floors]
end

Итерировать не нужно, поскольку employee[:column3] = d[:floors] всегда заканчивается последним элементом массива.Итак, вы можете просто пойти дальше и использовать last.

Сохраняет вам пару строк и немного ввода.

0 голосов
/ 13 декабря 2018

Проблема в том, что вы перебираете @employee[:department], когда я думаю, что вы хотите перебирать i[:department].

Вы можете сделать

 @employees.values.flatten.each do |i|
     employee[:column1] = i[:name]
     employee[:column2] = i[:age]

     i[:department].each do |d|
         employee[:column3] = d[:floors]
     end
 end 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...