尝试在Rails中创建Atom提要3.当我刷新浏览器时,我看到基本的XML,而不是我正在寻找的Atom提要。
class PostsController < ApplicationController
# GET /posts
# GET /posts.xml
def index
@posts = Post.all
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @posts }
format.atom
end
end
index.atom.builder
atom_feed do |feed|
feed.title "twoconsortium feed"
@posts.each do |post|
feed.entry(post) do |entry|
entry.title post.title
entry.content post.text
end
end
end
localhost:3000 / posts.atom看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<feed xml:lang="en-US" xmlns="http://www.w3.org/2005/Atom">
<id>tag:localhost,2005:/posts</id>
<link rel="alternate" type="text/html" href="http://localhost:3000"/>
<link rel="self" type="application/atom+xml" href="http://localhost:3000/posts.atom"/>
<title>my feed</title>
<entry>
<id>tag:localhost,2005:Post/1</id>
<published>2012-03-27T18:26:13Z</published>
<updated>2012-03-27T18:26:13Z</updated>
<link rel="alternate" type="text/html" href="http://localhost:3000/posts/1"/>
<title>First post</title>
<content>good stuff</content>
</entry>
<entry>
<id>tag:localhost,2005:Post/2</id>
<published>2012-03-27T19:51:18Z</published>
<updated>2012-03-27T19:51:18Z</updated>
<link rel="alternate" type="text/html" href="http://localhost:3000/posts/2"/>
<title>Second post</title>
<content>its that second post type stuff</content>
</entry>
</feed>
答案 0 :(得分:3)
我遇到了同样的问题。
首先确保.builder文件生成的XML是有效的 Atom XML。您可以将其粘贴到W3c feed validator,它会告诉您它是否有问题。我粘贴了上面的XML,似乎有一些问题。编辑.builder文件并生成结果XML后。使用有效的原子Feed刷新页面。
如果您仍然看到普通的XML,请检查浏览器的调试器,以查看您为Feed获取的响应标头。具体来说,您是否获得内容类型标题?浏览器需要它是一些xmlish mime类型,如'application / xml'或更好的'application / atom + xml'。如果您没有获得Content-Type,或者由于某种原因得错了,您可以直接在控制器的格式调用中覆盖headers
哈希中的响应头。只需添加一个代码块,其中包含典型的Atom mime类型字符串:
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @posts }
format.atom { headers["Content-Type"] = 'application/atom+xml; charset=utf-8'}
end
答案 1 :(得分:0)
This可能有助于在XHTML中格式化Feed。