2013-12-11 27 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