51 votes

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

Je suis assez nouveau dans Rails 3 et j'essaie de créer un flux RSS/Atom. Je connais étiquette de lien de découverte automatique mais à quoi est censé ressembler le contrôleur/action associé ?

Merci !

77voto

Matt Lennard Points 736

Auto_discovery_link_tag est un bon début. Une recherche rapide sur Google m'a permis de trouver des articles de blog sur les sujets suivants Comment créer un flux RSS dans Rails . Laissez-moi vous expliquer à quoi est censé 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 à celui du contrôleur. Voir, ci-dessous :

vues/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 ici que la magie de Railsy opère. Ici, le XML du flux RSS est généré et renvoyé à HTTP.

5voto

thatmiddleway Points 1321

Utilisation de la balise auto_discovery_link_tag :

Dans le contrôleur :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X