验证网址|预先http://

时间:2011-10-11 22:02:54

标签: ruby-on-rails ruby regex ruby-on-rails-3 model-view-controller

我想检查用户提交的针对正则表达式的URL,如果url不以http://或https://开头,那么我想先将http://添加到开头然后保存它。

我有一些代码,但我不知道如何将它合并到我的应用程序中。这段代码有用吗?并且我会在允许用户创建链接之前将其合并到我的应用程序中以检查URL。

我已经附上了下面的代码和文件。感谢

def add_http(link)
  if (link =~ /http[s]?:\/\//)
    link
  else
    "http://#{link}"
  end
end

Controller https://gist.github.com/1279576

_form https://gist.github.com/1279580

模型https://gist.github.com/1279582

3 个答案:

答案 0 :(得分:8)

修改了一下代码。这工作

  before_save do |link|
      link.url = "http://#{url}" unless link.url=~/^https?:\/\//
  end 

感谢指导@bandito& @rubyprince

答案 1 :(得分:6)

您可以将它放在模型中

class Link < ActiveRecord::Base
  attr_accessible :title, :url
  before_save :sanitize_url

  private 
  def sanitize_url
    if url_changed?
     url = "http://#{url}" unless url =~ /^https?:\/\//
    end
  end 
end

答案 2 :(得分:5)

这个想法很好。不过我会这样写的:

def add_http uri
  uri =~ %r(https?://) ? uri : "http://#{uri}"
end

更简单,没有倾斜的牙签! :-D