Проверка URL-адресов | Предшествующий http: // - PullRequest
2 голосов
/ 12 октября 2011

Я хочу проверить отправленные пользователем URL-адреса по регулярному выражению, если URL-адрес не начинается с http: // или https://,, тогда я хотел бы добавить http: // к началу и сохранить его.*

У меня есть код, но я не знаю, как включить его в мое приложение.Будет ли этот код работать?И я включил бы это в свое приложение, чтобы проверить URL прежде, чем позволить пользователям создавать ссылки.

Я прикрепил код и файлы ниже.Спасибо

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

Контроллер https://gist.github.com/1279576

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

Модель https://gist.github.com/1279582

Ответы [ 3 ]

8 голосов
/ 12 октября 2011

Немного исправил код. Это работает

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

Спасибо за руководство @bandito & @ rubyprince

6 голосов
/ 12 октября 2011

Вы можете разместить его в вашей модели

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
5 голосов
/ 12 октября 2011

Идея в порядке.Я бы написал так вот так:

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

Намного проще, и никаких зубочисток!: -D

...