3

在 Rails 3.2 应用程序中,我有一个带有:caption字段并使用 Carrierwave 处理图像文件的照片模型。

我正在尝试创建一个包含图像的原子提要。这样做的正确方法是什么?

目前我有

#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. 将图像合并到 atom 提要中的正确标记是什么?
  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 更容易做到这一点)。

同样,图像可以作为 img 添加到内容标签内的 RSS 中。

或者可以添加为附件:

@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 回答