如何从Rails中的上下文中提取URI

时间:2014-11-20 05:28:08

标签: ruby-on-rails

我试图找出一种从我视图中的内容中提取URI / URL的方法;在Rails中。

到目前为止,一切似乎都在起作用,但是我还在思考,因为源代码不是一个干净的URI,而是一个有额外内容的URI。到目前为止,在我看来,我有以下几点;

    <div id="social" class="facebook" data-url="<%= URI.extract(saved.content) %>">

现在生活在上面,但就像我说的一个小故障,因为Facebook有时会拿起网址,有时它不会。有了上述那条线;我得到以下源代码结果;

    <div id="social" class="facebook" data-url="[&quot;dealbook:&quot;, &quot;http://t.co/mUQOmLlLXG&quot;]">

saved.content有一条消息,有时会有一个网址;

有什么方法可以清理它吗?所以它变得更容易。如果URI / URL刚刚打印到data-url=""而不是引号,括号等,那就太棒了。

2 个答案:

答案 0 :(得分:1)

你可能想要这样的东西:

data-url="<%= URI.extract(saved.content).detect {|u| u.start_with? "http" } %>"

原因是URI#extract返回一系列匹配项;您可以使用Enumerable#detect查找与该块匹配的第一个,在这种情况下,该URL是以&#34; http&#34;开头的条件。

答案 1 :(得分:0)

# in saved model
 def content_url
   s = self.content.gsub(/&[0-9a-z]+;/i, ' ') # replace &xxx;(html symbol) with ' ' string
   URI.extract(s, ['http', 'https']).first
 end

#in view
<div id="social" class="facebook" data-url="<%= saved.content_url%>">

在已保存的模型中,定义方法#content_url以提取网址。