解决液体标签内的液体变量

时间:2011-08-31 15:24:57

标签: ruby liquid

我正在使用Octopress,这是Jekyll渲染我网站的框架。我正在使用一个包装ruby-aaws gem的插件,允许使用Amazon的产品标识符(asin)查询到Amazon。我想重复渲染页面的一部分,循环遍历asins列表以产生输出。到目前为止,这是我的代码:

<section>
  <h1>Recent Diversions</h1>
  {% for asin in ["044656432X", "0743276396", "B001YT048E"] %}
    {% capture a_image %}{{ asin | amazon_medium_image }}{% endcapture %}
    {% capture a_link %}{{ asin | amazon_link }}{% endcapture %}
    {% capture a_authors %}{{ asin | amazon_authors }}{% endcapture %}

    <p>{{ a_image }}</p>
    <p>{{ a_link }} by {{ a_authors }}</p>
  {% endfor %}
</section>

我的理解是{%capture variable_name%} ... {%endcaputre%}呈现封装的内容并将结果分配给variable_name。但是,当我生成网站时,没有生成任何内容。如果我将单个asin替换为捕获标记内的asin引用,则页面会正确呈现。

如何正确引用捕获标记内的asin变量才能使其正常工作?

1 个答案:

答案 0 :(得分:0)

我终于把它排除了。上面显示的代码位于名为aws.html的文件中,该文件包含在站点的主index.html中。 Liquid似乎不允许在该级别进行变量分配。当我将变量赋值移动到_config.yml文件时,即asins:[“044656432X”,“0743276396”,“B001YT048E”],那么上面的代码工作正常。