Tôi đang cố gắng phân tích cú pháp một URI từ đầu vào của người dùng. Tôi giả sử một số người dùng sẽ không đặt lược đồ trong URI của họ và tôi muốn mặc định là "http".Làm cách nào tôi có thể đặt lược đồ cho đối tượng URI trong Ruby
Các mã sau đây không làm việc:
require 'uri'
uri_to_check = URI::parse("www.google.com")
uri_to_check.scheme = "http" unless uri_to_check.scheme
puts uri_to_check.to_s
tôi mong đợi để xem "http://www.google.com" nhưng tôi nhận được "http: www.google.com". Thậm chí có thể làm theo cách này không?
Nếu có, tôi đang thiếu gì?
Có cách nào tốt hơn để thực hiện việc này không?
+1. Đối với trường hợp sử dụng cụ thể của bạn, bạn có thể muốn xem xét 'Addressable :: URI.heuristic_parse', được * cụ thể * dành cho trường hợp, trong đó một số thông tin bị thiếu thực sự từ URI thay vì cố ý bỏ qua. –
Địa chỉ :: URI.heuristic_parse chính xác là những gì tôi đang tìm kiếm. Cảm ơn bạn! – maz
Đồng ý .. những gì Tin Man nói là đúng, nhưng đối với trường hợp sử dụng thực tế (hoặc ít nhất, những gì câu hỏi cụ thể đề cập đến), 'Addressable :: URI.heuristic_parse' là những gì cần thiết. – hlascelles