我面临着一个无法解决的奇怪问题。
上下文:我有一些用于产品评论和产品元字段的元对象设置,它们引用与该产品相对应的评论。我正在尝试使用自定义液体部分在前端显示评论。我能够访问数据,但在处理评级数据时遇到一个非常奇怪的问题。评级字段是使用
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
过滤器,也会发生同样的事情。
可能是字段值不被视为整数而是字符串的问题。
你可以试试这个:
{% assign rating = review.rating.value | plus:0 %}