1

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と、すべてが再び機能します。

何かが劇的に変わったのですか?

4

2 に答える 2

1

カテゴリが定義されていない投稿が必要だと思いますか?

Jekyll 0.12.0によって、エラーキャッチの基準が高くなったと思います。したがって、投稿にカテゴリがない場合、Rubyコマンドpost.category[0] == aboutはスローせずFALSE、スローしますNA(またはそのようなもの)。以前は、Jekyllはこれを無視していました(おそらくそれをとして扱いますFALSE)。これは実際には最良の動作ではありません。

私の推測では、コマンドをより明示的に書き直す必要があります。つまり、category [0]が空でなく、値が「about」の場合です。ifコマンドの前にステートメントを追加することを検討してください。

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

最初に無効な比較を行っていないことを確認します。

于 2013-01-10T18:47:38.833 に答える
0

うーん、ここでエラーを再現できません。に変更すると

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

それは機能しますか?

于 2013-01-07T04:32:08.613 に答える