Перебирать хэши в жидких шаблонах
Я пишу сайт на 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 ответа
Решение
Когда вы перебираете хеш, используя переменную 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 %}
Я бы определил их так в YAML:
links:
demo: http://www.github.com/copperegg/mongo-scaling-demo
А затем повторить:
{% for link in page.links %}
<a href="{{ link[1] }}">{{ link[0] }}</a>
{% endfor %}
{% for link in page.links %}
{% for item in link %}
<a href="{{ item[0] }}">{{ link[1] }}</a>
{% endfor %}
{% endfor %}
У меня была очень похожая проблема, но в моей переменной было несколько элементов, поэтому я использовал недокументированный item
переменная, и это сделало свою работу.