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

Ruby on rails 如何从Rails中的上下文提取URI,ruby-on-rails,Ruby On Rails,我试图找出一种从视图中的内容中提取URI/URL的方法;在轨道上 到目前为止,一切似乎都在运行,但有一些小故障,我在想,因为源代码不是一个干净的URI,而是一个有额外内容的URI。到目前为止,我认为我有以下几点: <div id="social" class="facebook" data-url="<%= URI.extract(saved.content) %>"> 现在LiveAbove可以工作了,但正如我所说的,它有一个小故障,因为Facebook有

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

到目前为止,一切似乎都在运行,但有一些小故障,我在想,因为源代码不是一个干净的URI,而是一个有额外内容的URI。到目前为止,我认为我有以下几点:

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

现在LiveAbove可以工作了,但正如我所说的,它有一个小故障,因为Facebook有时会接收url,有时不会。与上述行;我得到以下源代码结果

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

已保存。内容
包含一条消息,其中有时可能包含url


我有什么办法可以清理一下吗?所以它更容易被捡起来。如果URI/URL只是打印到
数据URL=“”
中,而不是引号、括号等,那就太棒了。

您可能想要这样的东西:

data-url="<%= URI.extract(saved.content).detect {|u| u.start_with? "http" } %>"
数据url=“”
原因是
URI#extract
返回一个匹配数组;您可以使用
Enumerable#detect
查找与块匹配的第一个块,在这种情况下,URL以“http”开头。在保存的模型中 def content_url s=self.content.gsub(/&[0-9a-z]+;/i',)#替换&xxx;(html符号)包含“”字符串 提取(s,['http','https']) 结束 #鉴于
在保存的模型中,定义一个方法#content_url以提取url。

仅代码的答案会自动标记为低质量,因此在stackoverflow时不鼓励使用。今后请详细说明你的答案,并解释为什么它是问题的解决方案。这有助于其他用户。@yxf您为什么要将其放入模型中?这不应该进入控制器吗?有必要深入到视图中吗?@user2419316#内容是模型访问器,#内容#url用于从内容中提取url。如果您在控制器中定义了#内容#url?哪里辅助方法?。我认为最好在模型中定义。并在模型中定义保持代码干净。是否有一种方法可以同时检测http和https,以防万一:)如果我的回答正确,比如
{u | u.start|u with?“http”|“https”}
可以工作?我想这不是真的需要,因为检测部分中的http也会匹配https或httpy或其他内容。
# 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%>">