我正在使用Nokogiri解析HTML文档。代码包含几个这样的图像:
<a href="http://url_to_big_photo.jpg"><img alt="alternative-text" border="0" height="427" src="http://url_to_my_photo.jpg?" title="Image Title" width="640"></a>
我正在尝试将该图像保存到我的S3存储空间,更改样式并删除链接。所有图像都有css标签“.post-body img”。
到目前为止,我得到的最接近的是:
@doc.css(".post-body img").each do |image|
@new_photo = Photo.create!(
#Params required to save and upload the photo to S3.
...
...
)
# The url of the photo upload to S3 is @new_photo.photo.url
image['src']= @new_photo.photo.url
image['class'] = "my-picture-class"
image.parent['src] = '#'
puts image.parent.content
@doc.to_html
end
这删除了大照片的链接,但显然这不是一个好的解决方案。
我尝试使用image.parent&lt;&lt;替换父级http://rubyforge.org/pipermail/nokogiri-talk/2009-June/000333.html上建议的图像,但没有做任何事情,image.parent = image返回“无法重新显示节点(RuntimeError)”
答案 0 :(得分:1)
要将该邮件列表示例转换为适用于您的情况,您必须记住node
是他们试图摆脱的节点,在您的情况下是image.parent
。
因此,您应该尝试使用image.parent['src] = '#'
而不是link = image.parent
link.parent << image
link.remove
。
link = image.parent
link.replace(image)
修改强>
实际上,上面的代码可能会将所有图像移动到包含链接的任何元素的底部,所以请尝试这样做:
{{1}}