Ruby on rails 如果在db文本字段的内容中找到URL,是否会动态生成指向的链接?

Ruby on rails 如果在db文本字段的内容中找到URL,是否会动态生成指向的链接?,ruby-on-rails,Ruby On Rails,我有一个自动报告工具(公司内部网),其中管理员有几个文本区域框,可以为电子邮件正文的不同部分输入一些文本 我想做的是解析文本区域的内容,并用链接标签包装找到的任何超链接(因此,当报告发布时,会出现链接而不是文本URL) 有没有一种简单的方法可以做到这一点,而不需要找出一种解析文本的方法来在找到的内容周围添加链接标记(['http:'、'https:'、'ftp:]到后面的第一个空格) 谢谢大家!! Ruby 1.87、Rails 2.3.5有很多方法可以实现您的目标。一种方法是使用正则表达式。如

我有一个自动报告工具(公司内部网),其中管理员有几个文本区域框,可以为电子邮件正文的不同部分输入一些文本

我想做的是解析文本区域的内容,并用链接标签包装找到的任何超链接(因此,当报告发布时,会出现链接而不是文本URL)

有没有一种简单的方法可以做到这一点,而不需要找出一种解析文本的方法来在找到的内容周围添加链接标记(['http:'、'https:'、'ftp:]到后面的第一个空格)

谢谢大家!!
Ruby 1.87、Rails 2.3.5有很多方法可以实现您的目标。一种方法是使用正则表达式。如果你从未听说过regex,这应该会让你了解最新情况

例如:

content_string = "Blah ablal blabla lbal blah blaha http://www.google.com/ adsf dasd dadf dfasdf dadf sdfasdf dadf dfaksjdf kjdfasdf http://www.apple.com/ blah blah blah."
content_string.split(/\s+/).find_all { |u| u =~ /^https?:/ }
将返回:
[”http://www.google.com/", "http://www.apple.com/“]

现在,对于问题的后半部分,您将使用上面返回的数组替换超链接的文本链接

links = ["http://www.google.com/", "http://www.apple.com/"]
links.each do |l|
  content_string.gsub!(l, "<a href='#{l}'>#{l}</a>")
end
我希望这对你有帮助。

做一个助手:

def make_urls(text)
  urls = %r{(?:https?|ftp|mailto)://\S+}i
  html_text = text.gsub urls, '<a href="\0">\0</a>'
  html_text
end
def make_url(文本)
URL=%r{(?:https?| ftp | mailto)://\S+}i
html_text=text.gsub URL,''
html_文本
结束
在视图上,只需调用此函数,即可获得预期的输出。 比如:

irb(main):001:0>string='这里有一个链接:http://google.com'
=>“这里有一个链接:http://google.com"
irb(main):002:0>URL=%r{(?:https?| ftp | mailto)://\S+}i
=>/(?:https?| ftp | mailto):\/\/\S+/i
irb(main):003:0>html=string.gsub URL,''
=>“这里有一个链接:”
def make_urls(text)
  urls = %r{(?:https?|ftp|mailto)://\S+}i
  html_text = text.gsub urls, '<a href="\0">\0</a>'
  html_text
end
irb(main):001:0> string = 'here is a link: http://google.com'
=> "here is a link: http://google.com"
irb(main):002:0> urls = %r{(?:https?|ftp|mailto)://\S+}i
=> /(?:https?|ftp|mailto):\/\/\S+/i
irb(main):003:0> html = string.gsub urls, '<a href="\0">\0</a>'
=> "here is a link: <a href=\"http://google.com\">http://google.com</a>"