2011-11-16 81 views
3

我希望用戶能夠輸入網址,然後在我的視圖中輸入鏈接到該網址。將用戶輸入的網址導入到外部鏈接中

有效的輸入可能是e.x. https://www.google.com/pathhttp://www.google.comwww.google.com

是有標準導軌方式1)驗證輸入是有效的URL格式和2)轉換是第三格式http://www.google.com在我的意見,使外部鏈接的作品?

如果我能避免它,我不想重新發明輪子。

回答

8

檢查了這一點:

validates_format_of :website, :with => URI::regexp(%w(http https)) 

來源:http://intridea.com/2009/2/18/quick-tip-url-validation-in-rails?blog=company

要格式化丟失的協議(HTTP或HTTPS)的URL,我會做一個before_save掛鉤,預先考慮它,如果它的丟失:

before_save :format_url 

... 

def format_url 
    self.website = "http://#{self.website}" unless self.website[/^https?/]  
end 
+0

哦,這真的很酷。我知道URI庫,但不知道如何使用它。我把format_url放在before_validation中,這樣www.google.com就可以解析,但是在Rails 4中這似乎很完美 – spike

+0

,輸入的修改需要在'validates:website validation'驗證前發生: {}工作 – lhagemann