为什么Nokogiri不能用链接包裹我的图像?

时间:2015-03-19 23:01:51

标签: ruby nokogiri

当我尝试用链接标签包装图像时,我对Nokogiri(1.6.6.2)的反应感到困惑。这是我的问题的一个例子:

fragment = Nokogiri::HTML5.fragment("<p>Example</p><img src='test.jpg' class='test'><p>Example</p>")

现在我想用链接包装图像:

fragment.search('img').wrap('<a href="http://www.google.com"></a>')

遗憾的是,这会导致错误:

ArgumentError: Requires a Node, NodeSet or String argument, and cannot accept a NilClass.
(You probably want to select a node from the Document with at() or search(), or create a new Node via Node.new().)

现在非常奇怪,它适用于其他标签:

fragment.search('img').wrap('<something href="http://www.google.com"></something>')

为什么Nokogiri这样做?这是一个错误吗?

1 个答案:

答案 0 :(得分:1)

第一个问题是:

uninitialized constant Nokogiri::HTML5 (NameError)

您想要Nokogiri::HTML

运行此:

require 'nokogiri'

fragment = Nokogiri::HTML.fragment("<p>Example</p><img src='test.jpg' class='test'><p>Example</p>")
fragment.search('img').wrap('<a href="test">')

然后看片段:

puts fragment.to_html
# >> <p>Example</p><a href="test"><img src="test.jpg" class="test"></a><p>Example</p>

它似乎工作正常。添加尾随</a>也有效。

也许你需要检查你的Nokogiri和libXML2版本。