如何在Rails 3中创建RSS/Atom提要?

sim*_*sta 51 rss ruby-on-rails ruby-on-rails-3

我是Rails 3的新手,我正在尝试制作RSS/Atom提要.我知道auto_discovery_link_tag,但是相关的控制器/动作应该是什么样的?

谢谢!

小智 77

Auto_discovery_link_tag是一个好的开始.快速谷歌搜索,我发现了如何在Rails中创建RSS源的博客文章.让我向您介绍您的相关控制器/操作应该是什么样子:

控制器/ 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
Run Code Online (Sandbox Code Playgroud)

该文件的名称应与控制器匹配.见下文:

意见/职位/ 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
Run Code Online (Sandbox Code Playgroud)

这就是所有Railsy魔法发生的地方.这里,生成RSS提要XML并将其返回给HTTP.

  • 只是想补充一点,你应该将你的.rss.builder文件命名为你命名的动作(函数).所以在这种情况下它应该是feed.rss.builder而不是index.rss.builder. (3认同)
  • 尽管我希望你选择Atom而不是RSS,我建议你只使用其中一个.它们代表相同的信息,大多数现代feed解析库都支持它们,所以它们很好用:)检查这个最佳实践:http://blog.superfeedr.com/Feeds/RSS/Atom/Best%20Practice/饲料出版最佳实践/ (2认同)

tha*_*way 5

使用auto_discovery_link_tag:

在控制器中:

respond_to do |format|
  format.html
  format.atom {render action: 'index', layout: false}
end
Run Code Online (Sandbox Code Playgroud)