4

在 foo.html (一篇文章)中,我有以下内容:

{% assign table_name="application" %}
{% include table.html %}

此分配似乎在 table.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 中的一个错误,或者我没有准确地构建我的语句。

知道我怎样才能完成这项工作吗?

4

1 回答 1

10

看起来可以做到这一点。我不得不更多地以编程方式考虑它。似乎正在发生的事情是 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 %}

或者,正如 Jekyll 所看到的,

{% for header in site.table['aStringName'].headers %}
于 2012-11-22T08:06:43.230 回答