web-dev-qa-db-ja.com

液体テンプレートのハッシュを反復処理する

Liquidを使用するJekyllのサイトを書いています。

次のようにしたいページの前付けがあります。

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

しかし、私がこれまで持ってきたアイデアはどれも失敗しました。

46
Brian Hicks

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 %}
102
kikito

私はそれらをYAMLでこのように定義します:

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

そして繰り返します:

{% 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 %}

非常によく似た問題がありましたが、変数に複数の項目があるため、文書化されていないitem変数を使用すると、問題が解決しました。

1
user3411192