Доступ к многоуровневым YAML и Middleman

После просмотра этих двух ссылок использование YAML с Middleman стало намного понятнее: Middleman Docs( Локальные данные), разбор и составление YAML

Проблема, с которой я сейчас сталкиваюсь, - это доступ к нескольким уровням контента.

YAML (живет в данных/проектах)

- quote: This is a quote
  attribution: Kate Something
  extras:
      - extra one
      - extra two
      - extra three

- quote: Blah blah
  attribution: Donna Doe
  extras:
      - another extra
      - another extra

.HTML.ERB

<% data.projects.each do |f| %>
    <div><%= f["quote"] %>  <%= f["attribution"] %> <%= f["extras"] %></div> 
<% end %>

Вышеупомянутое работает гладко с Middleman, однако, как я могу получить доступ к данным под «extras:» и выплюнуть их в списке?

Другими словами, это то, что скомпилировано в сборке:

<div>This is a quote  Kate Something extra oneextra twoextra three</div>

Вот результат, которого нужно добиться:

<div>This is a quote  Kate Something 
  <ul>
    <li>extra one</li>
    <li>extra two</li>
    <li>extra three</li>
  </ul>
</div>

Заранее благодарим вас за внимание к этому вопросу. Пожалуйста, дайте мне знать, если вам нужны разъяснения по любому из вышеперечисленных вопросов, и я попытаюсь объяснить дальше.


person Tom Wahlin    schedule 08.04.2013    source источник


Ответы (1)


f["extras"] — это просто еще один массив, поэтому вы можете перебирать его так же, как вы перебираете data.projects:

<% data.projects.each do |f| %>
    <div><%= f["quote"] %>  <%= f["attribution"] %>
      <ul>
        <% f["extras"].each do |extra| %> <%# inner loop here %>
          <li><%= extra %></li>
        <% end %>
      </ul>
    </div> 
<% end %>
person matt    schedule 11.04.2013
comment
Спасибо, Мэтт! (Попробовал что-то подобное и понял, что использовал «‹%=» вместо «‹%»). Новичок в этом - действительно ценю это! - person Tom Wahlin; 13.04.2013