今夜はかなり厄介な問題が発生しました。ここにいる誰かが助けてくれるかもしれません。
私は nanoc で静的ブログを作成しており、現在、次/前の記事のヘルパーをいくつか作成しています (作成したいくつかのテストと戻り値を含めました)。
# lib/helpers.rb
include Nanoc3::Helpers::Blogging
include Nanoc3::Helpers::LinkTo
# Returns a link to the next article
# If the article in param is the most recent, returns nothing
def next_article article
articles = sorted_articles # returns an array of article ordered by date
pos = articles.index(article) # returns the expected integer
pos.class # returns Fixnum
pos.nil? # returns false
pos + 1 # NoMethodError: undefined method `+' for nil:NilClass
return if pos.zero? # NoMethodError: undefined method `zero?' for nil:NilClass
link_to(articles[pos+1][:title], articles[pos+1]) # Fails too, obviously
end
「pos」変数を使用できない理由がまったくわかりませんが、それでも読み取りを実行できます。誰かが洞察力を持っているなら、私はそれを取ります。前もって感謝します !
(関係がある場合は、OSX Lionでruby-1.9.3p194をrvmで使用しています)
更新: pos の戻り値は、読み取ったときの期待値であることを正確に示す必要がありました。奇妙なことに、設定
pos = articles.index(article).to_s.to_i
でもうまくいくようです。私はそれがどのように&なぜ起こるのか理解していません。
#layout/post_navigation.haml
.post_navigation
.next
=next_article @item