如何在Rails中urlize链接

时间:2012-08-20 21:01:55

标签: ruby-on-rails-3

我有一个用户定义的外部URL,我希望通过使用类似于Django urlize过滤器的内容将其转换为链接。一个人怎么可能这样做?

我只需要在前面的http://中添加一些内容,或者在缺少的情况下添加任何内容。

除非我错过了,link_to似乎没有这样做。

2 个答案:

答案 0 :(得分:2)

这是一个简单的辅助方法,可以根据需要添加http前缀:

def url_with_protocol(url)
  /^http/.match(url) ? url : "http://#{url}"
end

> url_with_protocol("google.com")
=> "http://google.com"

> url_with_protocol("http://google.com")
=> "http://google.com"

> url_with_protocol("https://google.com")
=> "https://google.com"

答案 1 :(得分:1)

我可以看到几个解决方案:

  • 创建一个帮助urlize(url),如果缺少则会添加http://
  • 覆盖模型上的url getter以添加http://
  • 在模型中添加一个before_save回调,将http://添加到网址,从而确保您的数据库中有一个有效的网址

就个人而言,我只是有一些验证,检查输入的网址是否有效。在这里,我会使用第3个选项。