我有一个带有link
属性的模型。链接属性可以设置为外部 URL,例如:http://google.com
或引用内部页面,例如:/users/1
。
表单link
中只是一个没有验证的文本字段。它是用 渲染的link_to "whatever", model.link
。
Rails 有很多 URI 验证示例。但是,我发现没有一个也考虑到相对路径。我正在考虑使用正则表达式,但想知道是否有更好的方法来设置link
可以处理外部(http/https)和内部(/users/1、/locations、/whatever/1/something/2)的属性) 路径。
应允许的示例
http://www.google.com
https://www.google.com
http://www.google.com?something=blah
http://www.google.com/thing/test/
/locations
/locations/1
/products/1/skus/4
"" (e.g. blank)
不应该被允许的例子
www.google.com
google.com
products/2
htt://
编辑
如果有更好的、完全不同的方法,我也对此持开放态度。