Цикл по вложенным данным yaml в файле .erb

Я не очень хорошо знаком с синтаксисом YAML и, похоже, не могу найти решение с помощью поиска.

Я пытаюсь просмотреть этот файл данных в цикле:

- category1:
  title: Title 1
  sub:
    name: name1
    desc: desc1
  sub:
    name: name2
    desc: desc2
  sub:
    name: name3
    desc: desc3
- category2:
  title: Title 2
  sub:
    name: name1
    desc: desc1
  sub:
    name: name2
    desc: desc2
  sub:
    name: name3
    desc: desc3

Вот мой цикл erb:

<% data.filename.category.each do |filter| %>
  <%= filter["title"] %>
  <% filter["sub"].each do |sub| %>
      <%= sub["name"] %>
      <%= sub["desc"] %>
  <% end %>
<% end %>

Желаемый результат:

Плитка1

name1 desc1 имя2 desc2 имя3 desc3

Плитка2

name1 desc1 имя2 desc2 имя3 desc3


1
701
1

Ответ:

Решено

Подобно Как получить файлы YAML для рендеринга в посреднике с помощью erb ...

Следующее должно помочь вам разобраться, это в основном вопрос структуры данных - ваш цикл находится на правильном пути:

Измените содержимое файла filename.yml на:

items:
- title:  "Title 1"
  subs:
    - name: "name1"
      desc: "desc1"
    - name: "name2"
      desc: "desc2"
    - name: "name3"
      desc: "desc3"
- title:  "Title 2"
  subs:
    - name: "name1"
      desc: "desc1"
    - name: "name2"
      desc: "desc2"
    - name: "name3"
      desc: "desc3"

И в вашем файле шаблона (при условии, что ваш файл данных находится в /data/filename.yml):

<% data.filename.items.each do |item| %>
    <h1><%= item.title %></h1>
    <% item.subs.each do |sub| %>
        <h2><%= sub.name %></h2>
        <h3><%= sub.desc %></h3>
    <% end %>
<% end %>