我一直在使用Feedzirra一段时间来抓取单个Feed并解析它们没有任何问题但是我试图通过它运行两个单独的feedburner feed我知道它们自己工作但是运行它们两个是产生错误。
NoMethodError in Feed entryController#index
undefined method `title' for #<Array:0x1042f9590>
我的模型看起来像这样:
def self.get_feeds
feed_urls = ["feed_1", "feed_2"]
update_from_feeds(feed_urls)
end
def self.update_from_feeds(feed_urls)
feeds = Feedzirra::Feed.fetch_and_parse(feed_urls)
add_entries(feeds.entries)
end
def self.update_from_feeds_continuously(feed_urls, delay_interval = 30.seconds)
feeds = Feedzirra::Feed.fetch_and_parse(feed_urls)
add_entries(feed.entries)
loop do
sleep delay_interval
feeds = Feedzirra::Feed.update(feeds.entries)
add_entries(feeds.new_entries) if feeds.updated?
end
end
private
def self.add_entries(entries)
entries.each do |entry|
unless exists? :guid => entry.id
create!(
:title => entry.title
)
end
end
end
这可能是我做错了但我找不到任何完整的代码示例或教程来解析多个feed,只是github页面上的两行代码。
提前致谢!
答案 0 :(得分:1)
当feeds
从update_from_feeds
返回fetch_and_parse
时,传入多个Feed时,它就是一个数组。因此,each
位于add_entries
方法是拆分为单个订阅源,而不是订阅源条目。要解决此问题,您可以按如下方式重新定义update_from_feeds
:
def self.update_from_feeds(feed_urls)
feeds = Feedzirra::Feed.fetch_and_parse(feed_urls)
feeds.each do |feed_url, feed|
add_entries(feed.entries)
end
end
这假设您将始终将多个Feed网址传递给update_from_feeds
(或数组中的单个网址)