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

フィードをフェッチするとき、Feedzirra は、HTTP フェッチの結果がエラー (つまり、200 または 3XX でない) の場合、フィード エントリを含むオブジェクトの代わりに 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 に答える