Ich habe gerade mein Album mit einem RSS Feed versehen und so bin ich jetzt für Abonnenten (sind wohl eher sehr wenige) bereit. Das ganze wurde unter Anleitung von:
versucht. Da nicht alles ganz so klappte und einige Anpassungen gemacht wurden hier ein weiters Howto:
Zuerst muss das Builder Gem welches einem erlaubt XML zu generieren installiert werden, sofern dies natürlich nicht schon installiert ist. Bei den anderen Tutorials schien dies der Fall zu sein.
gem install builder
Da ich ein Feed von meinen 10 neuste Fotoalben generieren will, fügte ich folgende Methode im AlbumsController ein:
def feed
@albums = Album.find(:all, :limit => 10,
rder => "created_at DESC")
end
Im views Verzeichnis erstelle ich die feed.rss.builder Datei mit folgendem Inhalt:
xml = Builder::XmlMarkup.new(:target => $stdout, :indent => 1)
xml.instruct!
ml, :version=>"1.0"
xml.rss :version=>"2.0" do
xml.channel do
xml.title("Trivialview Albums")
xml.description("Latest albums on trivialview")
xml.link formatted_albums_url(:rss)
for album in @albums
xml.item do
xml.title(album.name)
xml.description(album.short_description)
xml.pubDate(album.created_at.to_s(:rfc822))
xml.link(formatted_album_url(album, :rss))
end
end
end
end
Bei allen Howtos wir die erste Zeile nicht verwendet, was bei mir zu einem Fehler führte, da das xml Objekt nicht exisierte. Naja, mit dieser Instanzierung klappt es auf jeden Fall, nur bin ich mir nicht sicher ob dies einfach wegen einer korrupten Installation sein könnte.
Da das Album Model im routes.rb als Ressource definert ist muss folgender Eintrag her
map.connect 'albums/feed.:format', :controller => 'albums', :action => 'feed'
...
map.resources :albums
und zwar wie angedeutet vor dem resources Eintrag.
Damit der Link auch im Browser erscheint, muss nur noch folgende Zeile im header der view eingefügt werden.
<%= auto_discovery_link_tag(:rss, :action => 'feed.rss') %>