Есть ли причина, по которой вы повторно используете переменную @doc
экземпляра?
Когда дело доходит до устранения неполадок, подобных этой, я считаю, что лучшая идея - попытаться оценить тот же код без издержек Rails. Например:
require 'nokogiri'
doc = Nokogiri::HTML(DATA)
doc.css("p").each do |p|
p.remove if p["class"] == "why"
end
__END__
<html>
<head>
<title>Test</title>
</head>
<body>
<p>Test data</p>
<p>More <a href="http://stackoverflow.com">Test Data</a></p>
<p class="why">Why is this still here?</p>
</body>
</html>
Что возвращает:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
<head><title>Test</title></head>
<body>
<p>Test data</p>
<p>More <a href="http://stackoverflow.com">Test Data</a></p>
</body>
</html>
Теперь попробуйте выполнить paragraphs = @doc.css("p")
, а затем paragraphs.each ..
или просто пропустите все назначение, как у меня выше.