2011-02-16 54 views

回答

28

看起來您需要將協議粘貼到您的鏈接上。例如。你有www.userswebsite.com在數據庫中,它應該是http://www.userswebsite.com

+0

喔,真棒謝謝〜! – thedeepfield 2011-02-16 03:30:59

+0

棒極了,對我來說只是做了魔術:-) +1 :-) – 2013-03-18 14:41:27

+1

這個工作,但依賴於能夠始終保持在數據庫中消毒的URL,這可能並不總是可能的...看到一個Voldy的答案在出路時消毒 – rogerdpack 2014-09-05 14:31:46

94

你可以在前面加上協議的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' 
3

你存儲網址沒有http://,所以它們被解釋爲相對URL。 試試這個: 的link_to @ user.site, 「http://# {@ user.url}」

1

嘗試一下真棒寶石Domainatrix

然後,你可以簡單地解析與上飛的網址:

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

更好的是,在您的用戶模型中創建一個before_save動作,在保存之前解析url。

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"