2

我有一个用户定义的外部 URL,我想通过使用类似于 Djangourlize过滤器的东西将其转换为链接。怎么可能这样做呢?

我只需要在前面添加一些东西,http://或者如果缺少的话。

除非我错过了,link_to否则似乎不会这样做。

4

2 回答 2

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"
于 2012-08-20T23:13:19.757 回答
1

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

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

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

于 2012-08-20T21:44:03.643 回答