2012-04-14 69 views
0

我有一个字符串。该字符串是一个html代码,它可以作为我创建的博客文章的传情。整个html代码(teaser)存储在数据库的一个字段中。从字符串中提取 - 红宝石

我的目标是:当用户(Facebook的社交按钮)喜欢某个博客帖子时,他的新闻提要中会显示正确的数据。为了做到这一点,我需要在第一次出现图像时从传情中提取src="i-m-a-g-e--p-a-t-h"中的图像路径。当用户只在预告片中放置一个图像时,我成功了,但是如果他不小心放置了两个或更多图像,整个事情就会发生。 此外,对于描述字段,我需要在<p>标记内第一次出现内提取文本。问题在于用户可以在第一个标签中放置图像。

如果一位专家能帮我解决这个问题,几天来一直困扰着我,我将非常感激。

与提取SRC正则表达式文本字符串可以在这里找到:http://rubular.com/r/gajzivoBSf

谢谢!

+0

那么,嗯......你如何使用该网站? “提交”按钮在哪里? – Ryan 2012-04-14 23:25:58

回答

2

不要试图自己解析HTML。让专业人士来做。

require 'nokogiri' 
frag = Nokogiri::HTML.fragment(your_html_string) 
first_img_src = frag.at_css('img')['src'] 
first_p_text = frag.at_css('p').text 
+0

Phrogz,谢谢,这非常有帮助,而且它在我的导轨控制台中都很棒。但是,当我把我的代码放在.html.erb脚本中时,我经常会遇到与Nokogiri不同的问题,并且我得到如下消息:“未初始化的常量精炼厂:: Blog :: Post :: Nokogiri”你知道这个原因吗?如何解决它。谷歌在这件事上没有帮助 – Dantes 2012-04-20 10:30:34

+0

@Dantes听起来好像你没有在正确的位置添加'require'nokogiri'。 – Phrogz 2012-04-20 12:47:19

+0

我试图将它添加到任何地方 - 在Gemfile中,在模型的顶部(post.rb),在模型中创建的方法内部,在视图内... - 这些函数都不是。你能告诉我哪里是'正确的地方'吗? – Dantes 2012-04-20 14:37:48