vhenry wrote:
> I'd like to be able to both display rss feeds from other sites on my
> website and also to eventually produce rss feeds from my own content.
> 
> Can someone point me to a tutorial on how to do this? I found one that
> had code examples, but neglected to tell me where/which files to put
> the code.

Hi - here's a quick how-to...

create a controller called 'feeds'

create an action in this controller called "rss"

create a route to this action in your routes folder like so:

map.rss "rss", :controller => "feeds", :action => "rss", :format => :rss

Let's assume you have a model called Post and this feed is for all of 
your posts.

The rss action in your feeds controller should look like:

def rss
  @posts = Post.all :order => "created_at DESC"
end

create a view template for this feed called "rss.rss.builder"

Note - the first rss is the name of the template, the second is the 
format of the template.

the view should look something like this:

xml.instruct!
xml.rss "version" => "2.0",
        "xmlns:dc" => "htt://purl.org/dc/elements/1.1/" do
  xml.channel do
    xml.title "the title of your feed goes here"
    xml.description "write a short description"
    xml.pubDate CGI.rfc1123_date @posts.first.created_at if @posts.any?
    xml.link url_for :only_path => false, :controller => 'posts'
    xml.guid url_for :only_path => false, :controller => "posts"
    xml.lastBuildDate CGI.rfc1123_date @posts.first.updated_at if 
@posts.any?
    xml.language "en"
    @posts.each do |post|
      xml.item do
        xml.title post.title
        xml.description post.body[0..500]
        xml.link url_for :only_path => false,
                          :controller => 'posts',
                          :action => 'show',
                          :id => post
        xml.pubDate CGI.rfc1123_date post.updated_at
        xml.guid url_for :only_path => false,
                         :controller => 'post',
                         :action => 'show',
                         :id => post
        xml.author post.user.username
      end
    end
  end
end


Now all you have to do is add <%= link_to "rss feed", rss_path %> to 
your view and, if you like, <%= auto_discovery_link_tag :rss, rss_path 
%> to the <head></head> of your layout

read about the RSS specifications here:

http://cyber.law.harvard.edu/rss/rss.html

Hope that helps?

Gavin

http://handyrailstips.com

-- 
Posted via http://www.ruby-forum.com/.

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to