web-dev-qa-db-fra.com

Itérer sur des hachages dans des modèles liquides

J'écris un site dans Jekyll, qui utilise Liquid.

J'ai une première page pour les pages que j'aimerais ressembler à ceci:

---
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
---

Dans Liquid, la section des liens de YAML se présente comme suit:

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

J'aimerais pouvoir parcourir le tableau en faisant quelque chose comme ceci:

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

Mais toutes les idées que j'ai eues jusqu'à présent m'ont échoué.

46
Brian Hicks

Lorsque vous parcourez un hachage à l'aide d'une variable appelée hash, hash[0] contient la clé et hash[1] contient la valeur à chaque itération.

{% for link_hash in page.links %}
  {% for link in link_hash %}
    <a href="{{ link[1] }}">{{ link[0] }}</a>
  {% endfor %}
{% endfor %}
102
kikito

Je les définirais comme ceci dans YAML:

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

Et puis répétez:

{% for link in page.links %}
  <a href="{{ link[1] }}">{{ link[0] }}</a>
{% endfor %}
21
yegor256
  {% for link in page.links %}
      {% for item in link %}
        <a href="{{ item[0] }}">{{ link[1] }}</a>
      {% endfor %}
    {% endfor %}

J'ai eu un problème très similaire, mais j'avais plusieurs éléments dans ma variable, j'ai donc utilisé la variable item non documentée et elle a fait le travail.

1
user3411192