升级到0.12.0时出现jekyll编译错误

升级到0.12.0时出现jekyll编译错误,jekyll,Jekyll,由于我已将Jekyl更新为0.12.0,我的站点不再编译。我到处都有这样的代码,在帖子中循环并过滤一个失败的类别 <ul> {% for post in site.posts reversed %} {% if post.category[0] == "about" %} <li> <a href="{{base_path}}{{post.url}}">{{ post.title }}</a> </li&

由于我已将Jekyl更新为
0.12.0
,我的站点不再编译。我到处都有这样的代码,在帖子中循环并过滤一个失败的类别

<ul>
  {% for post in site.posts reversed  %}
  {% if post.category[0] == "about" %}
    <li>
      <a href="{{base_path}}{{post.url}}">{{ post.title }}</a>
    </li>
  {% endif %}
  {% endfor %}
</ul>
如果我删除了
jekyll0.12.0
,那么一切都会恢复正常


有什么东西发生了剧烈的变化吗?

嗯,我不能在这里重现这个错误。如果你把它改成

{% if post.category contains "about" %}

它能工作吗?

嗯,我不能在这里重现这个错误。如果你把它改成

{% if post.category contains "about" %}

它有效吗?

我想你一定有一些帖子没有定义任何类别

我相信Jekyll0.12.0提高了错误捕捉的标准。因此,如果一篇文章没有类别,Ruby命令
post.category[0]==about
不会抛出
FALSE
,而是抛出
NA
(或者类似的东西)。以前,Jekyll会忽略这一点(可能会将其视为
FALSE
),这并不是最好的行为

我的猜测是,您应该将命令重写为更明确的命令,即,如果类别[0]不是空的,并且具有值“about”。只需在命令之前添加额外的<>代码> 语句:

{% if defined?(post.category[0]) %}

首先检查您没有进行无效的比较

我想你一定有一些帖子没有定义任何类别

我相信Jekyll0.12.0提高了错误捕捉的标准。因此,如果一篇文章没有类别,Ruby命令
post.category[0]==about
不会抛出
FALSE
,而是抛出
NA
(或者类似的东西)。以前,Jekyll会忽略这一点(可能会将其视为
FALSE
),这并不是最好的行为

我的猜测是,您应该将命令重写为更明确的命令,即,如果类别[0]不是空的,并且具有值“about”。只需在命令之前添加额外的<>代码> 语句:

{% if defined?(post.category[0]) %}

首先检查您没有进行无效的比较

我不知道,谢谢你提供的信息:)。至于它为什么停止工作,我仍然不知道,它现在又开始滚动了…实际上你是对的。这是因为我的一些帖子没有分类。很酷,很高兴听到它起作用了。你能用上面的技巧让它在没有类别的情况下成功运行吗?如果我让Jekyll保持在0.11.2,是:)。否则不行,我将不得不改变网站的架构,并将没有分类的帖子移至页面。该网站托管在Github上,现在运行的是Jekyll 0.12.0。我不知道,谢谢你提供的信息:)。至于它为什么停止工作,我仍然不知道,它现在又开始滚动了…实际上你是对的。这是因为我的一些帖子没有分类。很酷,很高兴听到它起作用了。你能用上面的技巧让它在没有类别的情况下成功运行吗?如果我让Jekyll保持在0.11.2,是:)。否则不行,我将不得不改变网站的架构,并将没有分类的帖子移至页面。该网站托管在Github上,现在运行的是Jekyll0.12.0