Jekyll / liquid for 循环是神秘的
Jekyll / liquid for loop being mysterious
我正在尝试使用 Jekyll 中的 for 循环来呈现示例数据。我可以引用 markdown 对象或任何直接调用的对象,但是当我使用 for 循环时它不起作用。这是我遇到的问题的示例:
带有数据的 markdown 文件:
tests:
test1:
number: 1 .
test2:
number: 2 .
test3:
number: 3 .
sessions.html:
<p>{{ page.tests.test1.number }}</p>
<p>{{ page.tests.test2.number }}</p>
<p>{{ page.tests.test3.number }}</p>
这输出到:
<p>1</p>
<p>2</p>
<p>3</p>
如果我这样做:
{% for test in page.tests %}
<p>{{ test.number }}</p>
{% endfor %}
我得到:
<p></p>
<p></p>
<p></p>
我什至可以做到:
{% for test in page.tests %}
<p>{{ test }}</p>
{% endfor %}
并得到:
<p>test1{"number"=>1}</p>
<p>test2{"number"=>2}</p>
<p>test3{"number"=>3}</p>
知道我做错了什么吗?
看看这个:
{% for test in page.tests %}
<p>{{ test.number }}</p>
{% endfor %}
您正在迭代 page.tests
。由于 page.tests
是散列而不是列表,因此您正在迭代该对象的 键值对 。 (参见 this topic)。
键是test1
、test2
和test3
,您可以通过test[0]
.[=26访问它们=]
但是你需要值,在这种情况下你可以使用test[1]
,要获取号码,你可以调用test[1].number
:
{% for test in page.tests %}
<p>{{ test[1].number }}</p>
{% endfor %}
您将获得与第一个示例相同的输出。
或者,您可以尝试定义一个 列表,而不是 test1
、test2
和 test3
:
tests:
- number: 1
- number: 2
- number: 3
这样,您的代码也可以工作:
{% for test in page.tests %}
<p>{{ test.number }}</p>
{% endfor %}
我正在尝试使用 Jekyll 中的 for 循环来呈现示例数据。我可以引用 markdown 对象或任何直接调用的对象,但是当我使用 for 循环时它不起作用。这是我遇到的问题的示例:
带有数据的 markdown 文件:
tests:
test1:
number: 1 .
test2:
number: 2 .
test3:
number: 3 .
sessions.html:
<p>{{ page.tests.test1.number }}</p>
<p>{{ page.tests.test2.number }}</p>
<p>{{ page.tests.test3.number }}</p>
这输出到:
<p>1</p>
<p>2</p>
<p>3</p>
如果我这样做:
{% for test in page.tests %}
<p>{{ test.number }}</p>
{% endfor %}
我得到:
<p></p>
<p></p>
<p></p>
我什至可以做到:
{% for test in page.tests %}
<p>{{ test }}</p>
{% endfor %}
并得到:
<p>test1{"number"=>1}</p>
<p>test2{"number"=>2}</p>
<p>test3{"number"=>3}</p>
知道我做错了什么吗?
看看这个:
{% for test in page.tests %}
<p>{{ test.number }}</p>
{% endfor %}
您正在迭代 page.tests
。由于 page.tests
是散列而不是列表,因此您正在迭代该对象的 键值对 。 (参见 this topic)。
键是test1
、test2
和test3
,您可以通过test[0]
.[=26访问它们=]
但是你需要值,在这种情况下你可以使用test[1]
,要获取号码,你可以调用test[1].number
:
{% for test in page.tests %}
<p>{{ test[1].number }}</p>
{% endfor %}
您将获得与第一个示例相同的输出。
或者,您可以尝试定义一个 列表,而不是 test1
、test2
和 test3
:
tests:
- number: 1
- number: 2
- number: 3
这样,您的代码也可以工作:
{% for test in page.tests %}
<p>{{ test.number }}</p>
{% endfor %}