Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 使用户输入的url成为rails中的外部链接_Ruby_Ruby On Rails 3 - Fatal编程技术网

Ruby 使用户输入的url成为rails中的外部链接

Ruby 使用户输入的url成为rails中的外部链接,ruby,ruby-on-rails-3,Ruby,Ruby On Rails 3,我希望用户能够输入url,然后在我的视图中放置指向该url的链接 有效输入可以是e.x.https://www.google.com/path,http://www.google.com,www.google.com 是否有标准的rails方法1)验证输入是否为有效的url格式,2)将第三种格式转换为http://www.google.com在我的视图中,外部链接是否可以工作 如果可以避免的话,我不想重新发明轮子。看看这个: validates_format_of :website, :with

我希望用户能够输入url,然后在我的视图中放置指向该url的链接

有效输入可以是e.x.
https://www.google.com/path
http://www.google.com
www.google.com

是否有标准的rails方法1)验证输入是否为有效的url格式,2)将第三种格式转换为
http://www.google.com
在我的视图中,外部链接是否可以工作

如果可以避免的话,我不想重新发明轮子。

看看这个:

validates_format_of :website, :with => URI::regexp(%w(http https))  
资料来源:

要设置缺少协议(http或https)的URL的格式,我将在缺少协议(http或https)的情况下执行一个before_save hook,在它前面加上前缀:

before_save :format_url

...

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

强烈建议使用Domainatrix gem验证URL:


哦,那太酷了。我知道URI库,但不知道如何使用它。我在验证之前加入了format\u url,这样www.google.com就可以进行解析了,但在Rails 4中,这似乎工作得很好。对于“validates:website format:{}”,在验证之前的
中需要对输入进行修改。谢谢你的建议,但对于我正在做的事情来说,似乎有点过火了。github摘要也让我感到害怕