2013-12-11 23 views
0

我對軌道上的Ruby非常陌生。我正在製作一個網絡應用程序,在這個應用程序中,我必須從新聞網站獲取RSS源,我使用了gem feedzirra。我正在考慮從每個源URL中提取圖像並將其發佈到我的應用程序中。但我不知道哪些寶石適合從不同網站提取圖像。我想過使用nokogiri或opengraph,但我不知道如何去做。有人能指導我嗎?謝謝如何從網站中將圖像提取到我的導軌項目中?

我想要做這樣的事情:

<% @feed = Feedzirra::Feed.fetch_and_parse("http://feeds.bbci.co.uk/news/rss.xml") %> 
<% @feed.inspect %> 
<% @entries = @feed.entries %> 
<% for i in 0..9 %> 
<br> 
<b><u><%= @entries[i].title %></u></b> 
</br> 
<br> 
**<%= get image from @entries[i].url %> \\ how can i do this ?** 
</br> 
<% end %> 
+0

從每個提取圖像提取可能會提出你正好處於版權侵犯,這可能是非常昂貴的。仔細想想。另外,不要將該邏輯放在視圖中。它需要在一個預處理的控制器中,只有準備好的數據被傳遞到視圖中。如果將它放在視圖中,則會導致該用戶的瀏覽器掛起,而您的代碼嘗試從某個遠程站點檢索信息。您的應用程序及其顯示器將掛起,直至完成。它也可以通過放慢響應速度來增強系統的性能。 –

+0

謝謝我將代碼移動到控制器。 – user2709885

回答

1

它可以通過ActionView image_tag helper,這將在這種情況下,建立一個HTML img標籤到外部URL來實現:

... 
<% @entries.each do |entry| %> 
    <%= entry.title %> 
    <%= image_tag(entry.url) %> 
<% end %> 

另外,請考慮更多的Rubyish方式來遍歷上面介紹的Array元素。

如果你想通過前10個元素(在你的榜樣等)進行迭代,而不是整個數組,你可以做到這一點通過以下方式:

<% @entries[0..9].each do |entry| %> 
    <%= entry.title %> 
    <%= image_tag(entry.url) %> 
<% end %> 

編輯:

看起來好像你可以使用Nokogiri從條目摘要中獲得img標記,但沒有自己測試過,但你應該檢查這篇博文: http://verboselogging.com/2009/05/24/rss-fun-with-feedzirra

+0

謝謝你的回答。我完全按照你所說的做了,但仍然沒有顯示圖像。實際上,當我們將entry.url傳遞給image_tag時,它不會識別url中的圖像,因此它不會顯示它。我想我們必須將圖像的鏈接傳遞給image_tag,但是如何獲得該圖像? – user2709885

+0

嗯,你說得對,這就是'image_tag'的工作原理。我認爲entry.url存儲圖像的直接鏈接,這是以這種方式實現它的唯一方式(例如'<%= image_tag'http://example.com/pic.jpg'%>')。 – Jacka

+1

我編輯了我的答案,請嘗試使用Nokogiri來獲取img標籤,在上面包含的博客文章之後。 – Jacka