اذهب إلى المحتوى
  • 0

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

TheBrain

السؤال

أريد أن أضيف جزء 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" }
رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 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
رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...