2

今夜はかなり厄介な問題が発生しました。ここにいる誰かが助けてくれるかもしれません。

私は 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
4

0 に答える 0