• 0

كيف أضيف http(s) إلى الرابط إذا لم تكن موجودة في روبي؟

أريد أن أضيف جزء http أو https إلى الرابط في حالة لم يكتب المستخدم هذا الجزء من الرابط، فما هي أسهل طريقة لفعل ذلك؟
جربت فعل هذا باستخدام التعابير النمطية:

validates :url, :format => { :with => /^((http|https):\/\/)?[a-z0-9]+([-.]{1}[a-z0-9]+).[a-z]{2,5}(:[0-9]{1,5})?(\/.)?$/ix, :message => " is not valid" }

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

يوجد العديد من الطرق في روبي لفعل ذلك، فيمكنك على سبيل المثال إنشاء دالة لتعمل كمرشح (فلتر) للتأكد من وجود جزء http وإضافته في حالة عدم وجوده كما في المثال التالي:

before_validation :smart_add_url_protocol

protected

def smart_add_url_protocol
  unless self.url[/\Ahttp:\/\//] || self.url[/\Ahttps:\/\//]
    self.url = "http://#{self.url}"
  end
end

وإذا أردت تجنب التعابير النمطية فيمكنك في هذه الحالة استخدام URI.parse كما في المثال التالي:

u = URI.parse('/pancakes')
if(!u.scheme)
    # prepend http:// and try again
elsif(%w{http https}.include?(u.scheme))
    # you're okay
else
    # you've been give some other kind of
    # URL and might want to complain about it
end

ومن الطرق الأخرى أيضا:

def link=(_link)
    u=URI.parse(_link)

    if (!u.scheme)
        link = "http://" + _link
    else
        link = _link
    end
    super(link)
end

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن