Ruby 无法将变量用于Nanoc中的基本操作

Ruby 无法将变量用于Nanoc中的基本操作,ruby,nanoc,Ruby,Nanoc,今晚我遇到了一个很烦人的问题,也许这里有人能帮我 我正在用nanoc建立一个静态博客,目前正在为下一篇/上一篇文章提供一些帮助,我包括了一些测试和返回: lib/helpers.rb 包括Nanoc3::Helpers::博客 包括Nanoc3::Helpers::LinkTo 返回指向下一篇文章的链接 如果param中的项目是最新的,则不返回任何内容 def下一篇文章 articles=sorted\u articles返回按日期排序的文章数组 pos=articles.indexarticl

今晚我遇到了一个很烦人的问题,也许这里有人能帮我

我正在用nanoc建立一个静态博客,目前正在为下一篇/上一篇文章提供一些帮助,我包括了一些测试和返回:

lib/helpers.rb 包括Nanoc3::Helpers::博客 包括Nanoc3::Helpers::LinkTo 返回指向下一篇文章的链接 如果param中的项目是最新的,则不返回任何内容 def下一篇文章 articles=sorted\u articles返回按日期排序的文章数组 pos=articles.indexarticle返回所需的整数 pos.class返回Fixnum 零位?返回false pos+1 NoMethodError:nil:NilClass的未定义方法“+” 如果位置为零,是否返回?NoMethodError:未定义nil:NilClass的方法'zero' 显然,链接到文章[pos+1][:title],文章[pos+1]也失败了 终止 我完全不知道为什么我不能使用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

我认为没有足够的信息来帮助你,看起来应该有用。我只能想到两种解释。您可能犯了一个错误,认为pos.class返回Fixnum,可能它为一篇文章返回Fixnum,但为另一篇文章返回nil,可能是最后一篇文章,或者这里有一些诡计,例如重写类方法。如果看不到文章和pos,我真的无法提供更多相关信息。一个重现这个问题的例子会很有帮助。我已经编辑了这个问题以提供更多的信息。由于代码很普通,我真的不知道如何提供更多的示例。我在这里跟随Joshua Check…我还认为pos在不同的运行中具有不同的价值。.to_.to_i“起作用”是因为nil.to_.to_i==0,但这可能不是您想要的结果。多亏了你们两位的时间,您是对的。返回的值对于我的帖子来说是完全合法的,但是我的about页面被相同的规则捕获,并且确实不是排序文章结果的一部分。今天醒来的时候脑子里就想着这件事,所以把它贴在网上感觉很糟糕。很抱歉我认为没有足够的信息来帮助你,看起来应该有用。我只能想到两种解释。您可能犯了一个错误,认为pos.class返回Fixnum,可能它为一篇文章返回Fixnum,但为另一篇文章返回nil,可能是最后一篇文章,或者这里有一些诡计,例如重写类方法。如果看不到文章和pos,我真的无法提供更多相关信息。一个重现这个问题的例子会很有帮助。我已经编辑了这个问题以提供更多的信息。由于代码很普通,我真的不知道如何提供更多的示例。我在这里跟随Joshua Check…我还认为pos在不同的运行中具有不同的价值。.to_.to_i“起作用”是因为nil.to_.to_i==0,但这可能不是您想要的结果。多亏了你们两位的时间,您是对的。返回的值对于我的帖子来说是完全合法的,但是我的about页面被相同的规则捕获,并且确实不是排序文章结果的一部分。今天醒来的时候脑子里就想着这件事,所以把它贴在网上感觉很糟糕。很抱歉