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

السؤال

نشر

أريد أن أضيف جزء 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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...