3

Rails 3.2 アプリには、フィールドを持つ Photo モデルがあり、:captionCarrierwave を使用して画像ファイルを処理しています。

画像を含むアトム フィードを作成しようとしています。これを行う正しい方法は何ですか?

現在、私は持っています

#views/photos/index.atom.builder
atom_feed do |feed|
  feed.title "Photos"
  @photos.each do |photo|
      feed.entry photo do |entry|
        entry.title photo.title
        entry.summary photo.caption
        entry.image image_path(photo.file.url(:large))
        entry.author do |author|
          author.name photo.user.name
        end
      end
    end
end

これはフィード マークアップにイメージ タグを追加しますが、これは正しい構文ではないのではないでしょうか?

<entry>
   ...
   <image>http://path/to/image.jpg</image> 
   ...
</entry>

それ以外の場合、次の構文を見たことがあります

<entry>
    <content type="image/jpg" src="/path/to/image.png" />
</entry>

詳しい方、教えていただけるとありがたいです:

  1. アトムフィードに画像を組み込むための正しいマークアップは何ですか?
  2. Rails の atom/xml ビルダーを使用してそのマークアップを生成するにはどうすればよいですか?
4

1 に答える 1

8

私は自分自身の質問に対する答えを見つけました。

Atom フィードの場合、img タグ内のコンテンツに画像を追加できます。

または、エンクロージャーとして追加することもできます。

feed.entry photo do |entry|
    entry.link href: photo.file.url(:large), rel:"enclosure", type:"image/jpeg" 
end

最終的に、私は Atom から RSS フィードに切り替えました (後でフィードを操作する必要があり、RSS の方が操作しやすいことがわかったため、これは私の使い方に特有のものです)。

ここでも、コンテンツ タグ内の RSS に画像を img として追加できます。

または、エンクロージャーとして追加することもできます:

@photos.each do |photo|
    xml.item do
        xml.media :content, url: photo.file.url(:fullpage), type:"image/jpeg", height:770, width:770
        xml.media :thumbnail, url: photo.file.url(:thumb), height: 50, width:50
    end
end

このような RSS フィードを作成するには、RSS フィードの先頭にいくつかの属性を追加する必要がある場合があります。

私のはこのように見えます

xml.instruct! :xml, version: "1.0" 
xml.rss version: "2.0", "xmlns:media" => "http://search.yahoo.com/mrss/", "xmlns:atom" => "http://www.w3.org/2005/Atom" do
...
于 2012-08-21T09:49:01.943 に答える