2017-10-20 29 views
5
require 'uri' 
uri = URI.parse 'http://dxczjjuegupb.cloudfront.net/wp-content/uploads/2017/10/Оуэн-Мэтьюс.jpg' 

tarayıcılar bu yakut sınıf biraz eskiyse http://dxczjjuegupb.cloudfront.net/wp-content/uploads/2017/10/Оуэн-Мэтьюс.jpg yüzden kendimi soruyorum ile bir sorunum yok ASCII olmalı Ve ben tamamen feragat ya da bazı yapmalıdır? hata işleme ...Yakut: URI :: InvalidURIError (URI sadece

+2

sadece tarayıcı örtülü URL URL Yakut aynı yapacağını anlamına gelmediğini kodlar çünkü Ruby size zorundayız. URL'yi kendiniz kodlayın: – spickermann

cevap

5

sadece kendime soru sorarak bana geldi cevap:

begin 
    uri = URI.parse(url) 
rescue URI::InvalidURIError 
    uri = URI.parse(URI.escape(url)) 
end 
+4

'uri = URI.parse (URI.escape (ur) l)) 'daha iyi bir cevaptır. 'kurtarma' bloğu kesinlikle gereksizdir. – mudasobwa

+1

@mudasobwa Tüm şeylerden kaçarak dikkatli olun: 'uri = URI.parse (URI.escape ('http://example.com/not%20cool'))" verimler "" http://example.com/not% 2520cool "' – tadman

+0

@tadman, 'url'nin neye göre oluşturulduğuna bağlıdır. Daha iyisi 'discount =% 5' doğru şekilde kodlanmış :) – mudasobwa