Mam pewną zmienną, jestem pewien że jest to adres www (a jak nie to mi to wisi - konkretnie jest to jedno z pól w dodawaniu komentarza). Jak mogę sprawdzić, czy zaczyna się od http://, a jeśli nie, to dodać ten fragment na początek adresu?
Aktualnie mam coś takiego:
class Comment < ActiveRecord::Base
belongs_to :post
validate :url_must_be_right
def url_must_be_right
if www.slice(0,7)!=“http://”
www=“http://”+www
end
end
end
Na dodatek nie wiem dlaczego, pluje mi, że www = nil chociaż w params widzę, że www ma pewną wartość. : |
Sprawdzić czy w stringu jest link, jeśli tak, to zrobić z niego “htmlowy” link, albo przemłynić go przez link_to : P
def validate
begin
uri = URI.parse(url)
if uri.class != URI::HTTP
errors.add(:url, 'Only HTTP protocol addresses can be used')
end
rescue URI::InvalidURIError
errors.add(:url, 'The format of the url is not valid.')
end
end
albo tak
def sanitize_www
www = (www =~ %r[^http://]) ? www : “http://” + www
end
end[/code]
Atrybut www może być pusty jeśli nie ma takiej kolumny w tabeli. Na pewno odpaliłeś migracje?
Osobna sprawa: nie jestem pewien czemu ale nadpisywanie validate zaproponowane przez Gotara strasznie mi śmierdzi
na szybko w google wklepałem i 2 pierwsze strony (propozycje wkleiłem), bo wiem, że wiele osób woli tu zapytać, niż w google sprawdzić, ale oczywiście jak jest coś gotowego na githubie to jak najbardziej trzeba skorzystać.
[quote=radarek]www = (www =~ %r[^http://]) ? www : "http://" + www
To jest przypisanie do zmiennej lokalnej www, powinno być self.www = .[/quote]
Dzięki wielkie wszystkim! : )