You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jekyll中where筛选器失效及变量替换失败问题求助

问题2:Where过滤器中使用变量代替常量无效

这个问题几乎都是数据类型不匹配导致的:

  • 你通过split方法得到的courseID是字符串类型(split返回的所有结果都是字符串)
  • 而site.data.courses中的id大概率是数字类型(比如你在数据文件里写的是id: 1而非id: "1")

字符串和数字直接比较是不相等的,所以不管用where还是where_exp都匹配不到元素。

给你两种可行的修复方案:

方案1:将courseID转换为数字类型

用plus: 0过滤器把字符串转成数字,让两边类型一致:

{% assign id = include.lessonID | split: '.' %}
{% assign courseID = id | first | plus: 0 %}
{% assign node = site.data.courses | where: "id", courseID | first %}

方案2:在where_exp中统一类型后比较

如果不想转换变量类型,可以在where_exp的表达式里把两边都转成相同类型再比较,比如都转成字符串:

{% assign id = include.lessonID | split: '.' %}
{% assign courseID = id | first %}
{% assign node = site.data.courses | where_exp: "selNode", "selNode.id | to_s == courseID" | first %}

另外可以验证一下courseID的值是否正确,比如在模板里加一行{{ courseID | inspect }},看看输出的是字符串还是数字,同时检查site.data.courses里的id格式,确保两者的类型或值能匹配上。


内容的提问来源于stack exchange,提问作者Somenath Sinha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:42:41