在foo.html(一个帖子)中,我有以下内容:
{% assign table_name="application" %}
{% include table.html %}
此分配在表中似乎工作正常.html
{% assign tableName = table_name %}
<p>table name is: {{ tableName }}</p> # renders "table name is: application"
现在,我尝试通过执行以下操作对我在 config.yml 中定义的数据数组进行排序:
{% for header in site.table.tableName.headers %}
<th>{{ header }}</th>
{% endfor %}
这给我没有任何输出。
如果我更改 for
语句以包含变量的内容,而不是变量,它可以正常工作。
{% for header in site.table.application.headers %}
这让我相信这不是我的数组的问题,而是 Jekyll 的缺点,Jekyll 中的错误,或者我没有准确地构造我的语句。
知道我怎样才能做到这一点吗?
看起来可以做到这一点。我不得不更程序化地考虑它。似乎正在发生的事情是,杰基尔在期待一个物体,而我正在喂它一根绳子。
{% assign tableName = "aStringName" %}
{% include table.html %}
所以
# in _includes/table.html
{% for header in site.table.tableName.headers %}
被解释为
{% for header in site.table."aStringName".headers %}
当我切换到对象的括号表示法时,它是完美的。
最终结果:
{% for header in site.table[tableName].headers %}
或者,正如杰基尔所看到的,
{% for header in site.table['aStringName'].headers %}