不能将变量用于Nanoc中的基本操作

时间:2012-08-16 02:48:00

标签: ruby nanoc

今晚我遇到了一个非常烦人的问题,也许这里的某个人能够帮助我。

我正在建立一个带有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

0 个答案:

没有答案