Перебирать хэши в жидких шаблонах - PullRequest
43 голосов
/ 21 ноября 2011

Я пишу сайт на Jekyll, который использует Liquid.

У меня есть материал для страниц, которые я бы хотел выглядеть следующим образом:

---
title: Designing algorithms that scale horizontally
speaker: Luke Ehresman, CopperEgg
category: notes.mongodallas.talks
links:
 - demo: http://www.github.com/copperegg/mongo-scaling-demo
layout: talknotes
---

В Liquid,Раздел ссылок YAML выглядит так:

[{'demo' => 'http://www.github.com/copperegg/mongo-scaling-demo' }]

Я хотел бы иметь возможность перебирать массив, делая что-то вроде этого:

<a href="{{ link.value }}">{{ link.key }}</a>

Но любые идеи, которые я 'Мы до сих пор подводили меня.

Ответы [ 3 ]

101 голосов
/ 29 ноября 2011

Когда вы перебираете хеш с помощью переменной с именем hash, hash[0] содержит ключ, а hash[1] содержит значение на каждой итерации.

{% for link_hash in page.links %}
  {% for link in link_hash %}
    <a href="{{ link[1] }}">{{ link[0] }}</a>
  {% endfor %}
{% endfor %}
21 голосов
/ 24 мая 2014

Я бы определил их так в YAML:

links:
  demo: http://www.github.com/copperegg/mongo-scaling-demo

А затем повторить:

{% for link in page.links %}
  <a href="{{ link[1] }}">{{ link[0] }}</a>
{% endfor %}
1 голос
/ 12 июня 2017
  {% for link in page.links %}
      {% for item in link %}
        <a href="{{ item[0] }}">{{ link[1] }}</a>
      {% endfor %}
    {% endfor %}

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

...