web-dev-qa-db-fra.com

Comment créer un flux RSS / Atom en Rails 3?

Je suis assez nouveau pour Rails 3, et j'essaie de créer un flux RSS/Atom. Je connais auto_discovery_link_tag , mais quel est le contrôleur associé/l'action censée ressembler?

Merci!

51
simonista

Auto_discovery_link_tag est un bon début. Une recherche rapide sur Google et j'ai trouvé des articles de blog sur Comment créer un flux RSS dans Rails . Permettez-moi de vous expliquer à quoi devrait ressembler votre contrôleur/action associé:

controllers/posts_controller.rb

def feed
    @posts = Post.all(:select => "title, author, id, content, posted_at", :order => "posted_at DESC", :limit => 20) 

    respond_to do |format|
      format.html
      format.rss { render :layout => false } #index.rss.builder
    end
end

Le nom de ce fichier doit correspondre au contrôleur. Voir ci-dessous:

views/posts/feed.rss.builder

xml.instruct! :xml, :version => "1.0" 
xml.rss :version => "2.0" do
  xml.channel do
    xml.title "Your Blog Title"
    xml.description "A blog about software and chocolate"
    xml.link posts_url

    for post in @posts
      xml.item do
        xml.title post.title
        xml.description post.content
        xml.pubDate post.posted_at.to_s(:rfc822)
        xml.link post_url(post)
        xml.guid post_url(post)
      end
    end
  end
end

C'est là que toute la magie Railsy se produit. Ici, le flux RSS XML est généré et renvoyé à HTTP.

77
Matt Lennard

Utilisation de l'auto_discovery_link_tag:

Dans le contrôleur:

respond_to do |format|
  format.html
  format.atom {render action: 'index', layout: false}
end
5
thatmiddleway