2013-01-06 105 views
1

因爲我已經更新了Jekyl到0.12.0我的網站不再編譯了。無論我有這樣的代碼,通過郵局循環和過濾類別失敗jekyll編譯錯誤升級到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然後一切再次工作。

有什麼變化的劇烈的方式嗎?

回答

1

我想你必須有一些沒有任何類別定義的職位?

我相信Jekyll 0.12.0使錯誤捕捉的標準更高。所以如果一個帖子沒有類別,Ruby命令post.category[0] == about不會丟棄FALSE,它會拋出NA(或類似的東西)。以前,傑基爾會忽略這個(大概把它當作FALSE),這並不是最好的行爲。

我的猜測是,你應該重寫命令更明確,即如果category [0]不是空的AND值爲「about」。考慮你的命令之前,簡單地增加額外的if聲明:

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

要檢查你不先進行無效的比較。

+0

不知道,謝謝你的信息:)。至於爲什麼它停止工作,我仍然不知道,它現在再次滾動... –

+0

其實你是對的。這是因爲我的一些帖子沒有分類。 –

+0

酷,很高興聽到它的工作。你是否能夠使用上述技巧成功運行它,即使沒有類別也能運行? – cboettig

0

嗯,我不能在這裏重現錯誤。如果將其更改爲

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

它工作嗎?

+0

不,我已經試過:( –