为什么 Nokogiri 不能用 link 包裹我的图像?
Why can't Nokogiri wrap my image with a link?
当我尝试用 link 标签包裹图像时,我对 Nokogiri (1.6.6.2) 的反应感到困惑。这是我的问题的一个例子:
fragment = Nokogiri::HTML5.fragment("<p>Example</p><img src='test.jpg' class='test'><p>Example</p>")
现在我想用 link 包裹图像:
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 为什么要这样做?这是一个错误吗?
第一个问题是:
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 版本。
当我尝试用 link 标签包裹图像时,我对 Nokogiri (1.6.6.2) 的反应感到困惑。这是我的问题的一个例子:
fragment = Nokogiri::HTML5.fragment("<p>Example</p><img src='test.jpg' class='test'><p>Example</p>")
现在我想用 link 包裹图像:
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 为什么要这样做?这是一个错误吗?
第一个问题是:
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 版本。