【发布时间】:2016-04-27 11:54:39
【问题描述】:
我的用户可以选择将他们的网站、Facebook 和 twitter URL 添加到他们的个人资料中。
我想让他们输入完整的 URL (http://www.facebook.com/USERNAME) 或 URL 的一部分,例如。 www.facebook.com/USERNAME 或只是USERNAME,然后在需要时自动添加https://facebook.com/。我想要 http://,然后输入的 URL 将直接链接到他们的网站/facebook 等。
对于我拥有的网站 URL:
before_validation :add_url_protocol
def add_url_protocol
if self.website && !url_protocol_present?
self.website = "http://#{self.website}"
end
end
def url_protocol_present?
self.website[/\Ahttp:\/\//] || self.website[/\Ahttps:\/\//]
end
然后有进一步的正则表达式验证。 这很好用。
问题是我对正则表达式没有太多了解,我不确定如何将 facebook.com/ 部分添加到此 before_validation 代码中。
任何帮助将不胜感激,谢谢。
更新:
def add_url_protocol
if self.website && !url_protocol_present?
self.website = "http://#{self.website}"
end
if self.facebook && !url_facebook_present?
self.facebook = "http://facebook.com/#{self.facebook}"
end
end
这几乎可行。如果用户输入USERNAME,则输出良好。如果用户输入 www.facebook.com/USERNAME 则输出变为http://facebook.com/www.facebook.com/USERNAME
【问题讨论】:
-
你为什么混淆了:
self.website = "http://facebook.com/#{self.username}"? -
差不多,但是如果用户输入 www.facebook.com/USERNAME ,输出变为facebook.com/www.facebook.com/USERNAME
标签: ruby-on-rails regex validation