From 4a5e2ec52e5b346858738990c05ab45812f9bf78 Mon Sep 17 00:00:00 2001 From: djones Date: Tue, 14 Sep 2010 15:02:02 +1200 Subject: add rss support --- app/controllers/blog/posts_controller.rb | 12 ++++++++---- app/views/blog/posts/index.rss.builder | 17 +++++++++++++++++ config/routes.rb | 8 +++++--- 3 files changed, 30 insertions(+), 7 deletions(-) create mode 100644 app/views/blog/posts/index.rss.builder diff --git a/app/controllers/blog/posts_controller.rb b/app/controllers/blog/posts_controller.rb index abb870d..a0340b7 100644 --- a/app/controllers/blog/posts_controller.rb +++ b/app/controllers/blog/posts_controller.rb @@ -2,12 +2,16 @@ class Blog::PostsController < BlogController before_filter :find_all_blog_posts before_filter :find_blog_post, :only => [:show, :comment] - + + def index + respond_to do |format| + format.html + format.rss + end + end + def show @blog_comment = BlogComment.new - - # you can use meta fields from your model instead (e.g. browser_title) - # by swapping @page for @blogs in the line below: present(@page) end diff --git a/app/views/blog/posts/index.rss.builder b/app/views/blog/posts/index.rss.builder new file mode 100644 index 0000000..d9ad0da --- /dev/null +++ b/app/views/blog/posts/index.rss.builder @@ -0,0 +1,17 @@ +xml.instruct! :xml, :version => "1.0" +xml.rss :version => "2.0" do + xml.channel do + xml.title RefinerySetting.find_or_set(:site_name, "Company Name") + xml.description RefinerySetting.find_or_set(:site_name, "Company Name") + " Blog Posts" + xml.link blog_root_url + + @blog_posts.each do |post| + xml.item do + xml.title post.title + xml.description post.body + xml.pubDate post.created_at.to_s(:rfc822) + xml.link blog_post_url(post) + end + end + end +end \ No newline at end of file diff --git a/config/routes.rb b/config/routes.rb index 01be470..a0c1f94 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,10 +1,11 @@ if Rails.version < '3.0.0' ActionController::Routing::Routes.draw do |map| map.namespace(:blog) do |blog| + blog.rss_feed 'feed.rss', :controller => 'posts', :action => 'index', :format => 'rss' blog.root :controller => "posts", :action => 'index' - blog.post '/blog/:id', :controller => "posts", :action => 'show' - blog.category '/blog/categories/:id', :controller => "categories", :action => 'show' - blog.post_blog_comments '/blog/:id/comments', :controller => 'posts', :action => 'comment' + blog.post ':id', :controller => "posts", :action => 'show' + blog.category 'categories/:id', :controller => "categories", :action => 'show' + blog.post_blog_comments ':id/comments', :controller => 'posts', :action => 'comment' end map.namespace(:admin, :path_prefix => 'refinery') do |admin| @@ -32,6 +33,7 @@ else Refinery::Application.routes.draw do scope(:path => 'blog', :module => 'blog') do root :to => 'posts#index' + match 'feed.rss', :to => 'posts#index.rss', :as => 'rss_feed' match ':id', :to => 'posts#show', :as => 'blog_post' match 'categories/:id', :to => 'categories#show', :as => 'blog_category' match ':id/comments', :to => 'posts#comment', :as => 'blog_post_blog_comments' -- cgit v1.2.3