отображать вложенный JSON в ruby ​​на рельсах - PullRequest
0 голосов
/ 22 октября 2019

Я полагаю, что это будет легко исправить, но все, что я пытаюсь, не работает.

Я получаю данные из внешнего API и смотрю на отображение данных после сопоставления. Идентификаторы.

Данные представлены в формате JSON и имеют некоторое вложенное содержимое.

Я пробовал следующее

<li>Street: <%= @users.find{|u| u['id'] == @album['userId']}.try(:[],'address''street') || 'not available' %></li>

Данные структурированы следующим образом:

{
  {
    "id": 1,
    "name": "Leanne Graham",
    "username": "Bret",
    "email": "Sincere@april.biz",
    "address": {
      "street": "Kulas Light",
      "suite": "Apt. 556",
      "city": "Gwenborough",
      "zipcode": "92998-3874",
      "geo": {
        "lat": "-37.3159",
        "lng": "81.1496"
      }
    },
}

Ответы [ 2 ]

1 голос
/ 22 октября 2019

Вы захотите, чтобы это было:

<li>Street: <%= @users.find{|u| u['id'] == @album['userId']}.try(:[],'address').try(:[],'street') || 'not available' %></li>

Для многоуровневого try вы, возможно, захотите изучить dig.

Также, если итерациякак и в ваших предыдущих вопросах, тогда @album может потребоваться album. Если это в другом контексте, чем ваши предыдущие вопросы, не обращайте внимания.

0 голосов
/ 22 октября 2019

Здесь полезно dig:

https://ruby -doc.org / core-2.3.0_preview1 / Hash.html

<li>Street: <%= @users.find{|u| u['id'] == @album['userId']}.dig(:address, :street)  || 'not available' %></li>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...