如何计算Liquid中的变量+1

时间:2015-05-16 10:26:16

标签: ruby liquid

我完全不知道如何通过{% assign var = 0 %}对一个变量进行计数加一。这应该是最简单的任务。这是我到目前为止所尝试的内容:

{% assign amount = 0 %}
{% for variant in product.variants %}
    {% assign amount = amount + 1 %}
{% endfor %}

Amount: {{ amount }}

结果始终为0。也许我忽视了一些显而易见的事情。也许有一个更好的方式。我想要归档的只是获得运行的迭代次数。

2 个答案:

答案 0 :(得分:6)

由于{{ increment amount }}将输出您的变量值而不会影响{% assign %} 定义的变量,我建议您使用{% capture %}

{% assign amount = 0 %}
{% for variant in product.variants %}
    {% capture amount %}{{ amount | plus:1 }}{% endcapture %}
{% endfor %}

Amount: {{ amount }}

我同意这很冗长,但它的AFAIK是唯一可行的解​​决方案。

答案 1 :(得分:3)

这对我有用,而且不那么冗长:

{% assign amount = 0 %}
{% for variant in product.variants %}
  {% assign amount = amount | plus:1 %}
{% endfor %}

此外,看起来capture返回一个字符串而不是一个整数,如果你想做amount之类的事情,就必须将{{if amount >= 10}}强制转换为整数。