我正在使用FeedTools聚合RSS源。 我按照這個教程:http://simonwoodside.com/weblog/2008/12/7/ruby_on_rails_feedrss_aggregator/和一切運作良好。在ruby/rails中過濾哈希中的哈希數組
問題是我想從分析的源哈希內部過濾存在於數組[:項目]中的一些哈希。
這裏是我的數據庫中的RSS緩存飼料對象:
create_table "cached_feeds", :force => true do |t|
t.string "uri"
t.text "parsed_feed"
t.datetime "created_at"
t.datetime "updated_at"
end
在腳本/控制檯解析飼料看起來是這樣的:
parsed_feed: {:uri => "http://www.someblog.com",
:items =>
[ {:published_at => some date,
:link => "http://www.someblog.com/somelink.html",
:title => "Some Title"},
{:published_at => another date,
:link => "http://www.someblog.com/anotherlink.html",
:title => "Another Title"} ]
}
正如你可以看到有對parsed_feed兩個散列,:uri和:items。 :items將所有的feed項目細節都藏在一大堆哈希中。
現在讓我們說「Some Title」已經是數據庫中文章的名稱。 RSS提要列表中的項目的目的是告訴用戶哪些RSS提要中的文章尚未上傳到數據庫中,因此我只想在視圖中顯示「另一個標題」。
這種方法在控制做得很好,顯示了不帶過濾器的所有項目:
def read_cache
website_articles = @website.article_names.to_a #This would return ["Some Title"]
@@uris = ["#{Website.find(params[:id]).feed}"]
@@uris.map { |uri|
feed = CachedFeed.find_by_uri(uri).parsed_feed
feed[:items].map { |item| {:feed_title => @@title_map[feed[:title]] || feed[:title], :feed_item => item} }
} .flatten.sort_by { |item| item[:feed_item][:published] } .reverse
end
我試圖插入此代碼.flatten作爲過濾器
.reject {|k,v| website_articles.include? v}
這會工作後,如果我正在過濾一個正常的散列,但是從一個散列內的散列數組中進行過濾。我錯過了什麼?如何在不顯示「某些標題」的情況下顯示「另一個標題」?
很高興你明白了! – 2009-12-09 21:27:58