2012-03-27 6 views
3

Versuchen, einen Atom-Feed in Rails zu erstellen 3. Wenn ich meinen Browser aktualisiere, sehe ich grundlegende XML, nicht den Atom-Feed, nach dem ich suche.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 

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 sieht wie folgt aus:

<?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

Sieht aus wie ein Atom-Feed zu mir. Vielleicht fehlt Ihnen gerade ein Reader für Ihren Browser? – Jonathan

+0

@defaye das ist wahrscheinlich das Problem, ich bin in Chrom, empfohlener Leser? –

+1

[shoyu] (https://chrome.google.com/webstore/detail/ilicaedjojicckapfpfdoakbehjpfkah) vielleicht – Jonathan

Antwort

0

This mit der Formatierung der Feed in XHTML helfen könnte.

3

Ich stieß auf das gleiche Problem.

  1. Zuerst stellen Sie sicher, die XML, die von Ihrem .Builder-Datei generiert wurde, ist ein gültig XML Atom. Sie können es in die W3c feed validator einfügen, die Ihnen sagen wird, wenn etwas nicht stimmt. Ich habe das obige XML eingefügt und es gab einige Probleme, so scheint es. Sobald Sie die .builder-Datei bearbeiten und den resultierenden XML-Code übergeben. Aktualisieren Sie Ihre Seite mit dem gültigen Atom-Feed.

  2. Wenn Sie noch einfaches XML sehen, überprüfen Sie in Ihrem Browser-Debugger, um zu sehen, was Antwortheader Sie für den Feed erhalten. Konkret erhalten Sie Content-Type Header? Der Browser benötigt einen XML-MIME-Typ wie 'application/xml' oder noch besser 'application/atom + xml'. Wenn Sie diesen Inhaltstyp nicht erhalten oder aus irgendeinem Grund den falschen Inhalt erhalten, können Sie den Antwortkopf aus dem Hash headers direkt im Formataufruf in Ihrem Controller überschreiben. Fügen Sie einfach String einen Codeblock mit einem typischen Atom-Mime-Typ:

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