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

これができるように見えます。私はそれについてもっとプログラム的に考えなければなりませんでした。起こっているように見えるのは、ジキルがオブジェクトを期待していて、私がそれにストリングを供給していたということです。

{% 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 に答える