Rails原子进给验证失败

时间:2014-04-08 13:00:58

标签: ruby-on-rails xml builder atom-feed

我正在尝试为特价商品生成原子Feed。 控制器工作正常,因此链接http://localhost:3000/offers.atom呈现一些xml。 我在http://localhost:3000/offers页面中有一个优惠列表。对于每个优惠,我没有显示页面因为原始产品在其他网站上。所以在http://localhost:3000/offers页面中我只列出了优惠,但如果我点击特定优惠,我会被重定向到另一个网站。

我的问题是生成atom xml文件:

#app/views/offers/index.atom.builder
atom_feed do |feed|
  feed.title "title"
  feed.updated @offers.maximum(:updated_at)
  @offers.each do |offer|
    feed.entry(offer, url: offer.product_link) do |entry|
      entry.image image_tag(offer.img_link)
      entry.title offer.desc
      entry.description offer.desc
      entry.price offer.price
      entry.special_price offer.special_price
      entry.saving offer.saving
    end
  end
end

validator在我的xml文件中发现了一些错误。 这是我的xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<feed xml:lang="en-US" xmlns="http://www.w3.org/2005/Atom">
  <id>tag:localhost,2005:/offers</id>
  <link rel="alternate" type="text/html" href="http://localhost:3000"/>
  <link rel="self" type="application/atom+xml" href="http://localhost:3000/offers.atom"/>
  <title>title</title>
  <updated>2014-04-08T12:33:24Z</updated>
  <entry>
    <id>tag:localhost,2005:Offer/116</id>
    <published>2014-04-08T12:33:24Z</published>
    <updated>2014-04-08T12:33:24Z</updated>
    <link rel="alternate" type="text/html" href="http://e-commerce.centroservizirovigo.com/Detail.aspx?ProductId=2101845"/>
    <img>&lt;img alt="738750a1" src="http://e-commerce.centroservizirovigo.com//Images/1480/738750A1.jpg" /&gt;</img>
    <title>​Rilegatrice termica T400 GBC - 400 fogli - 4400411</title>
    <description>​Rilegatrice termica T400 GBC - 400 fogli - 4400411</description>
    <price>167.7</price>
    <special_price>124.0</special_price>
    <saving>26.1</saving>
  </entry>
</feed>

但我不知道要解决。

1 个答案:

答案 0 :(得分:1)

错误似乎很明显:

Undefined entry element: img
Undefined entry element: description
Undefined entry element: price
...

这些是您使用过的未被Atom规范定义的元素。它们不会出现在您的文档中,除非您将它们放在单独的命名空间中(如Extensions from Non-Atom Vocabularies)。

Missing entry element: author
Missing textual content

Atom规范需要一组最小字段(bare minimum atom tags required for feed validity)。您需要将它们包含在有效的Feed中。