2

我试图从我的博客加载提要,但这会导致标题中出现错误。

错误信息:

NoMethodError (undefined method `entries' for 0:Fixnum):
app/controllers/pages_controller.rb:6:in `home'

这就是我正在做的事情:

我在lib名为 的文件夹中创建了一个文件blog_feeds.rb,其中仅包含以下内容:

module BlogFeeds
require 'feedzirra'

def load_feeds
  feeds = Feedzirra::Feed.fetch_and_parse('http://blog.shigotodoko.com/feed')
end

end

错误的第 6 行是:

@feeds = load_feeds.entries

请注意,此错误仅有时发生,并非总是发生。

那么,你知道这里出了什么问题吗?

谢谢!

4

2 回答 2

6

在获取提要时,如果 HTTP 获取导致错误(即不是 200 或 3XX),Feedzirra 将返回 HTTP 状态代码而不是包含提要条目的对象。

为了优雅地处理这种情况,请检查您从 fetch_and_parse 返回的对象的类型,方法是将其包装在以下内容中:

unless feeds.is_a?(Fixnum)
  # work with the feeds object
else
  # handle the error condition, retry, etc.
end

如果足够频繁,您还应该能够通过在浏览器中重复获取提要来查看这些失败。

于 2012-01-17T05:25:20.390 回答
0

好吧,我之前的代码似乎有问题。

我试图随机化一些帖子并在视图上使用类似的东西:

@feeds.shuffle!.first(5)

为了获得前5个随机帖子。

为了修复它,我只是将方法替换shuffle!shuffle方法。

现在,一切正常!

于 2012-01-21T13:34:50.517 回答