液体变量上的上限/下限过滤器未按预期工作

问题描述 投票:0回答:1

我面临着一个无法解决的奇怪问题。

上下文:我有一些用于产品评论和产品元字段的元对象设置,它们引用与该产品相对应的评论。我正在尝试使用自定义液体部分在前端显示评论。我能够访问数据,但在处理评级数据时遇到一个非常奇怪的问题。评级字段是使用

rating
类型元字段设置的,因此如果使用
{{ review.rating.value }}
之类的内容获取其值。

我正在循环查看产品的所有评论并显示评论数据,如下所示:

{% for review in product.metafields.something_reviews.reviews.value %}
    <article class="review-wrapper">
        <div class="review-rating">
            {% assign rating = review.rating.value %}
            {% assign ratingCeil = rating|ceil  %}
            {% for star in (1..ratingCeil) %}
                <span class="rating-star"></span>
            {% endfor %}
        </div>
        <p class="review-text">
            {{ review.review }}
        </p>
        <p class="author-text">
            {{ review.author  }}
        </p>
    </article>
{% endfor %}

我遇到以下代码部分的问题:

{% assign rating = review.rating.value %}
{% assign ratingCeil = rating|ceil  %}
{% for star in (1..ratingCeil) %}
    <span class="rating-star"></span>
{% endfor %}

假设评论的评分为

4.2
(我保留了用户可编辑的字段,因此该值可以是任何小数,即使它对于单个评论来说没有意义)。在这种情况下,
review.rating.value|ceil
 的值应为
5
。然而,对我来说,它显示为
0
。如果我直接输出
{{ 4.2|ceil }}
甚至
{{ "4.2"|ceil }}
进行测试,它会给出正确的答案,但当我将其传递给上面这样的变量时却不会给出正确的答案。

我只是不明白这里发生了什么。这让我有点失去理智。在这方面的任何帮助将不胜感激。谢谢你。

PS:如果我使用

floor
 过滤器,也会发生同样的事情。

shopify shopify-liquid
1个回答
0
投票

可能是字段值不被视为整数而是字符串的问题。

你可以试试这个:

{% assign rating = review.rating.value | plus:0 %} 
© www.soinside.com 2019 - 2024. All rights reserved.