Ruby on rails 正在验证URL |在http之前://

Ruby on rails 正在验证URL |在http之前://,ruby-on-rails,ruby,regex,ruby-on-rails-3,model-view-controller,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

我想根据正则表达式检查用户提交的url,如果url不是以http://或https://开头,那么我想将http://前置到开头,然后保存它

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

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

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

_形式


这个主意很好。不过,我会这样写:

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

更简单,而且没有倾斜的牙签-D

您可以将其放置在您的模型中

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
class链接
修复了一点代码。这很有效

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

感谢@bandito和@rubyprince的指导

谢谢,我应该把代码放在哪里,以及如何将其绑定到我的应用程序中?@bandito的回答充分回答了这一点。我的回答完全与代码样式有关。:-)谢谢,但这不管用。在将任何url保存到链接表之前,如何将正则表达式和条件后缀应用于该url?
before\u create
将仅在
创建
记录的情况下检查url。最好在
保存
之前使用
,这将在
创建
更新
之前调用。可能副本