Ruby on rails 正在验证URL |在http之前://
我想根据正则表达式检查用户提交的url,如果url不是以http://或https://开头,那么我想将http://前置到开头,然后保存它 我有一些代码,但我不知道如何将其合并到我的应用程序中。这个代码行吗?在允许用户创建链接之前,我会将它合并到我的应用程序中检查URL 我已经附上下面的代码和文件。谢谢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
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。最好在保存
之前使用,这将在创建
和更新
之前调用。可能副本