RAILS link_to外部网站,url是用户表的属性,如:@ users.website

我正在一个网站上,允许用户创build一个帐户。 创build用户时的一个属性是用户个人网站。 当我尝试使用这样的用户网站:

<%= link_to @user.site, @user.url %> 

生成的url是:http: http://0.0.0.0:3000/www.userswebsite.com : http://0.0.0.0:3000/www.userswebsite.com

我认为这是因为link_to的@user部分…但我怎么能得到这个链接到www.userwebsite.com?

看起来你需要将协议粘贴在你的链接上。 比如你的数据库中有www.userswebsite.com,应该是http://www.userswebsite.com

如果不存在,可以使用协议预先安装url:

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

接着:

 link_to @user.site, url_with_protocol(@user.url), :target => '_blank' 

您正在存储的URL没有http://,因此它们被解释为相对URL。 试试这个:link_to @ user.site,“ http://# {@ user.url}”

试试真棒gemDomainatrix :

然后,您可以简单地使用以下方式parsingurl:

 <%= Domainatrix.parse(@user.url).url %> 

更好的是,在用户模型中创buildbefore_save动作,在保存之前parsingurl。

 before_save :parse_url def parse_url if self.url self.url = Domainatrix.parse(self.url).url end end 

以下是您可以使用Domainatrix做的一些示例:

 url = Domainatrix.parse("http://www.pauldix.net") url.url # => "http://www.pauldix.net" (the original url) url.public_suffix # => "net" url.domain # => "pauldix" url.canonical # => "net.pauldix" url = Domainatrix.parse("http://foo.bar.pauldix.co.uk/asdf.html?q=arg") url.public_suffix # => "co.uk" url.domain # => "pauldix" url.subdomain # => "foo.bar" url.path # => "/asdf.html?q=arg" url.canonical # => "uk.co.pauldix.bar.foo/asdf.html?q=arg" 
Interesting Posts