液体 - 除非 for.loop 似乎总是最后一个

kaw*_*nah 3 ruby liquid shopify

请考虑以下内容:

{% for variant in product.variants %}
    {{ forloop.index }}<br>
    {{ unless forloop.last }}LAST<br>{{ endunless }}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

根据shopify文档

如果这是 for 循环的最后一次迭代,则返回 true。如果不是最后一次迭代,则返回 false。

上面代码的输出是:(对于 3 个变体)

1
LAST
2
LAST
3
LAST
Run Code Online (Sandbox Code Playgroud)

为什么?变体对象与上下文中的其他对象不同吗forloop.last

Hol*_*ust 9

您已unless使用双大括号分隔符而不是大括号百分比分隔符来分隔查询。因此,它们不会围绕文字值形成条件范围,LAST因此总是添加该值(忽略条件)。

如果您对条件使用正确的大括号样式,它应该可以正常工作:

{% for variant in product.variants %}
    {{ forloop.index }}<br>
    {% unless forloop.last %}LAST<br>{% endunless %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅文档。