Jak na RSS v Rails

Krátký a jednoduchý návod jak vytvořit RSS v Ruby on Rails. Pokud někdo neví o co jde, tak technické informace jsou na Wikipedii - RSS a zjednodušeně lze říct, že RSS je něco co vám pomůže např. sledovat všechny články které vyjdou na stránkách, které vás zajímají.

Takže předpokládejme, že chceme RSS pro články v našem blogu. Máme tabulku articles a k ní model Article, není asi třeba tohle dál rozvádět.

Kontroler articles_controller.rb - načteme posledních 10 článků a renderujeme šablonu (bez layoutu)

def rss
@articles = Article.find(:all, :limit => 10, :order => 'articles.publish_datetime DESC')
render :layout => false
end

 

Šablona rss.rxml - pokud vás zajímá co která značka zajímá, tak vyšel pěkný článek třeba na Intervalu - RSS? RSS!. Značek můžete použít samozřejmě více, záleží na vašich potřebách, tohle je taková minimalistická verze.

xml.instruct!(:xml, :version => "1.0") 
xml.rss(:version => "2.0", "xmlns:dc" => "http://purl.org/dc/elements/1.1/", "xmlns:atom" => "http://www.w3.org/2005/Atom") do
xml.channel do
xml.title('Náš Blog - Články')
xml.link('http://www.nasblog.cz/articles/rss')
xml.tag!("atom:link", :href => 'http://www.nasblog.cz/articles/rss', :rel => "self", :type => "application/rss+xml")
xml.description('RSS feed článků z našeho blogu.')

@articles.each do |article|
xml.item do
xml.title(h article.title)
xml.tag!("dc:creator", h(article.creator.nick))
xml.description(h article.content)
xml.pubDate(article.publish_datetime.strftime("%a, %d %b %Y %H:%M:%S %z"))
xml.link('http://www.nasblog.cz/articles/' + article.permalink)
xml.guid('http://www.nasblog.cz/articles/' + article.id.to_s, :isPermaLink => false)
end
end
end
end

Tak a máme RSS hotové, na konec ještě malé vylepšení. Pokud chcete, aby se vám v adresním řádku prohlížeče zobrazovala ikona RSS (jako je na obrázku) a vaši návštěvníci tak o RSS byli informováni, vložte do HTML hlavičky následující:

3_medium

<head> 
.
.
<link href="/articles/rss" rel="alternate" title="Články" type="application/rss+xml" />
</head>
<body>
.
.

03.11.2008 07:06 - Tomáš Pavelka [poslední změna 06.11.2008 16:13]

Komentáře

Cau, super za zdroj o Rails v cestine.

Misto davani odkazu natvrdo radsi ale radit lidem, at vyuzijou helper: http://www.railsbrain.com/api/rails-2.1.2/doc/index.html?a=M001999&name=auto_discovery_link_tag#

karmi 05.11.2008 16:07

Jojo, dobrá připomínka.

Tomáš Pavelka 07.11.2008 12:36

Přidat komentář