1

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

これにより、大きな写真へのリンクが削除されますが、明らかに良い解決策ではありません。

http://rubyforge.org/pipermail/nokogiri-talk/2009-June/000333.htmlで提案されているように、 image.parent << image を使用して親を置き換えようとしましたが、何もしませんし、 image.parent =画像は「ノードを再親化できませんでした (RuntimeError)」を返します

4

1 に答える 1

1

そのメーリングリストの例をあなたの状況に適用するために変換するにnodeは、それが彼らが取り除こうとしているノードであることを覚えておく必要がありますimage.parent

したがって、代わりにimage.parent['src] = '#'次を試してください:

link = image.parent
link.parent << image
link.remove

編集:

実際、上記のコードはおそらくすべての画像をリンクを含む要素の一番下に移動するので、代わりにこれを試してください:

link = image.parent
link.replace(image)
于 2012-10-06T17:03:29.203 に答える