【发布时间】:2015-09-19 00:58:09
【问题描述】:
我在窥探,这张图片给我在 Nokogiri 带来了一些麻烦。例如
[8] pry(main)> img
=> #(Element:0x3fe805871b94 {
name = "img",
attributes = [
#(Attr:0x3fe8058716d0 { name = "alt", value = "Alt text here" }),
#(Attr:0x3fe805870460 { name = "src", value = "/path/to/file/a.jpg" }),
#(Attr:0x3fe80587044c { name = "style", value = "width: 452px; height: 190px" })]
})
[9] pry(main)> URI.escape(img)
NoMethodError: undefined method `gsub' for #<Nokogiri::XML::Element:0x007fd00b0e3728>
from /Users/snowcrash/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/uri/rfc2396_parser.rb:304:in `escape'
知道为什么以及如何解决它吗?
【问题讨论】:
-
这个错误很清楚为什么。问题是您为什么认为这会起作用以及您期望发生什么。请在帖子中回答这些问题,然后人们将更有可能提供帮助。
-
你的问题令人费解。如果您使用的是 Nokogiri,我们可以假设您相当了解对象及其方法的工作原理。你得到了 Nokogiri::XML::Element 的
inspect输出应该暗示你没有处理字符串,这是URI.escape所期望的。因此,Ruby 抱怨gsub对非字符串参数无效似乎是明智的。 -
当我查看 URI.escape 的文档时,一切都变得清晰起来。我假设 URI.escape 将采用 Nokogiri XML 元素,仅提取 URI 并将其转义为字符串。