jekyll编译错误升级到0.12.0

时间:2013-01-06 13:42:35

标签: 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>
  {% endif %}
  {% endfor %}
</ul>

这是我收到的错误消息:

Liquid Exception: undefined method `gsub' for ["about"]:Array in 2012-09-20-about.md

如果我删除Jekyll 0.12.0,那么一切都会再次运作。

是否有过激烈的变化?

2 个答案:

答案 0 :(得分:1)

我认为你必须有一些没有定义任何类别的帖子?

我相信Jekyll 0.12.0使错误的标准更高。因此,如果帖子没有类别,则Ruby命令post.category[0] == about不会抛出FALSE,它会抛出NA(或类似的东西)。之前,Jekyll会忽略这一点(大概将其视为FALSE),这不是最好的行为。

我的猜测是你应该重写命令更明确,即如果category [0]不为空并且值为“about”。考虑在命令之前添加额外的if语句:

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

要检查您是否先进行无效比较。

答案 1 :(得分:0)

嗯,我不能在这里重现错误。如果将其更改为

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

有效吗?