Rails 3 Atom Feed - PullRequest
       46

Rails 3 Atom Feed

3 голосов
/ 28 марта 2012

Попытка создать фид Atom в Rails 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>

Ответы [ 2 ]

3 голосов
/ 01 июня 2012

Я столкнулся с той же проблемой.

  1. Сначала убедитесь, что XML, созданный вашим файлом .builder, является допустимым XML Atom.Вы можете вставить его в W3c-валидатор , который сообщит вам, если с ним что-то не так.Я вставил XML выше и, похоже, возникли некоторые проблемы.После того, как вы отредактируете файл .builder и передадите полученный XML-код.Обновите страницу, указав действительный канал Atom.

  2. Если вы все еще видите обычный XML, проверьте в отладчике своего браузера, чтобы узнать, какие заголовки ответа вы получите для канала.В частности, вы получаете заголовок Content-Type ?Браузер должен иметь какой-нибудь xmlish тип MIME, например «application / xml» или, еще лучше, «application / atom + xml».Если вы не получаете этот Content-Type или неверный по какой-либо причине, вы можете переопределить заголовок ответа из хэша headers непосредственно в вызове формата в вашем контроллере.Просто добавьте блок кода с типичной строкой MIME-типа Atom:

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
0 голосов
/ 28 марта 2012

Это может помочь с форматированием канала в XHTML.

...