2010-10-16 7 views

Répondre

77

Auto_discovery_link_tag est un bon début. Une recherche rapide sur Google et j'ai trouvé des billets de blog sur How to Create an RSS feed in Rails. Permettez-moi de vous remplir ce que votre contrôleur associé/l'action est censé ressembler à:

contrôleurs/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:

vues/messages/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à toute la magie Railsy arrive. Ici, le flux RSS XML est généré et renvoyé à HTTP.

+1

Merci Matt, c'est logique, je n'avais jamais entendu parler du fichier .builder auparavant. Pour ceux qui s'interrogent sur Atom, je viens de faire une recherche pour "rails atom.builder" et j'ai obtenu un fragment de code très similaire, mais pour atom. (http://www.papodenerd.net/creating-atom-feeds-with-ruby-on-rails/) – simonista

+2

Autant que je souhaite que vous ayez choisi Atom sur RSS, je vous recommande de n'en utiliser qu'un seul. Ils représentent les mêmes informations et la plupart des bibliothèques d'analyse de flux modernes prennent en charge les deux, donc ils sont prêts à partir :) Consultez ces bonnes pratiques: http://blog.superfeedr.com/Feeds/RSS/Atom/Best%20Practice/ feed-publishing-best-practices/ –

+0

Julien, je suis d'accord que les gens devraient juste en choisir un et y aller avec. Je voulais juste fournir la même information pour Atom afin qu'il soit facile pour quelqu'un de choisir l'un ou l'autre après avoir lu cette page. – simonista

5

Utilisation du auto_discovery_link_tag:

Dans le contrôleur:

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

cela a-t-il fonctionné pour vous? – thatmiddleway

Questions connexes