Скажем, у нас есть HTML, в котором все ...
<div class="replace-me">
</div>
... необходимо заменить на
<video src='my_video.mov'></video>
Код следующий:
doc.css("div.replace-me").each do |div|
div.replace "<video src='my_video.mov'></video>"
end
Это просто, но, к сожалению, у меня это не работает. Nokogiri вылетает с ошибкой:
неопределенный метод children' for nil:NilClass
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/whiny_nil.rb:52:in
method_missing '
/Library/Ruby/Gems/1.8/gems/nokogiri-1.4.2/lib/nokogiri/html/document_fragment.rb:16:in initialize'
/Library/Ruby/Gems/1.8/gems/nokogiri-1.4.2/lib/nokogiri/xml/node.rb:424:in
new '
/Library/Ruby/Gems/1.8/gems/nokogiri-1.4.2/lib/nokogiri/xml/node.rb:424:in fragment'
/Library/Ruby/Gems/1.8/gems/nokogiri-1.4.2/lib/nokogiri/xml/node.rb:776:in
coerce '
/Library/Ruby/Gems/1.8/gems/nokogiri-1.4.2/lib/nokogiri/xml/node.rb:331:in `replace '
Замена на примитивный div работает:
doc.css("div.replace-me").each do |div|
div.replace "<div>Test</div>"
end
Это ошибка Нокогири, или я что-то не так делаю?
PS: та же проблема с "add_child", "inner_html" и другими сеттерами для этой цели