2012-03-27 9 views
3

RailsでAtomフィードを作成しようとしています。私がブラウザをリフレッシュすると、探しているAtomフィードではなく、基本的なXMLが表示されます。Rails 3 Atom Feed

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 

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 

index.atom.builderは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> 
+1

は私にはAtomフィードのように見えます。たぶんあなたのブラウザのためのリーダーが欠けているだけでしょうか? – Jonathan

+0

@defaye thatsおそらく問題です、私はクロムの中で、お勧めの読者ですか? –

+1

[shoyu](https://chrome.google.com/webstore/detail/ilicaedjojicckapfpfdoakbehjpfkah)おそらく – Jonathan

答えて

0

ThisはXHTMLでフィードのフォーマットで役立つかもしれません。

3

この同じ問題が発生しました。

  1. まず、あなたの.builderファイルによって生成されたXMLが有効のAtom XMLであることを確認してください。 W3c feed validatorに貼り付けると、何か問題があるかどうかがわかります。私は上記のXMLを貼り付けていくつかの問題があったようです。 .builderファイルを編集し、結果のXMLパスを作成します。有効なアトムフィードでページをリフレッシュしてください。

  2. あなたはまだあなたが飼料用に取得何レスポンスヘッダを参照するには、ブラウザのデバッガで確認し、プレーンなXMLが表示された場合

    。特にコンテンツタイプヘッダーを取得していますか?ブラウザでは、 'application/xml'やそれより良い 'application/atom + xml'のようなxmlish MIMEタイプが必要です。 Content-Typeを取得していない場合や何らかの理由で間違って取得している場合は、コントローラーのフォーマット呼び出しで直接headersハッシュの応答ヘッダーを上書きできます。単に典型的なアトムの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