2010-10-16 4 views

risposta

77

Auto_discovery_link_tag è un buon inizio. Una rapida ricerca su Google e ho trovato post sul blog su How to Create an RSS feed in Rails. Lascia che ti riempio su ciò che si suppone il controller/azione associata a guardare come:

controllori/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 

Il nome di questo file deve corrispondere al controllore. Vedi, qui di seguito:

views/messaggi/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 

Questo è dove tutta la magia Railsy accade. Qui, il feed RSS XML viene generato e restituito a HTTP.

+1

Grazie Matt, ha senso, non avevo mai sentito prima il file .builder. Per chi si interroga su Atom, ho appena fatto una ricerca per "rails atom.builder" e ho ottenuto un frammento di codice dall'aspetto molto simile, ma per atom. (http://www.papodenerd.net/creating-atom-feeds-with-ruby-on-rails/) – simonista

+2

Per quanto mi auguro tu abbia scelto Atom su RSS, ti consiglio di utilizzare solo uno di questi. Rappresentano le stesse informazioni e la maggior parte del supporto di libreria di analisi dei feed moderni, quindi sono a posto :) Controlla queste best practice: http://blog.superfeedr.com/Feeds/RSS/Atom/Best%20Practice/ feed-publishing-best-practice/ –

+0

Julien, sono d'accordo che le persone dovrebbero sceglierne una e seguirla. Volevo solo fornire le stesse informazioni per Atom in modo che fosse facile per qualcuno sceglierne una dopo aver letto questa pagina. – simonista

5

Utilizzando l'auto_discovery_link_tag:

Nel controllore:

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

ha fatto questo lavoro per voi? – thatmiddleway