如何在 Rails 3 中制作 RSS/Atom 提要?
Posted
技术标签:
【中文标题】如何在 Rails 3 中制作 RSS/Atom 提要?【英文标题】:How do I make an RSS/Atom feed in Rails 3? 【发布时间】:2011-04-26 11:01:46 【问题描述】:我是 Rails 3 的新手,我正在尝试制作一个 RSS/Atom 提要。我知道auto_discovery_link_tag,但相关的控制器/动作应该是什么样子?
谢谢!
【问题讨论】:
【参考方案1】:Auto_discovery_link_tag 是一个好的开始。快速谷歌搜索,我在How to Create an RSS feed in Rails 上找到了博客文章。让我告诉你你的关联控制器/动作应该是什么样子:
控制器/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
此文件的名称应与控制器匹配。见下文:
views/posts/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
这就是所有 Railsy 魔法发生的地方。在这里,RSS 提要 XML 被生成并返回给 HTTP。
【讨论】:
谢谢马特,这是有道理的,我以前从未听说过 .builder 文件。对于那些想知道 Atom 的人,我只是搜索了“rails atom.builder”,并得到了一个看起来非常相似的代码片段,但对于 atom。 (papodenerd.net/creating-atom-feeds-with-ruby-on-rails) 尽管我希望您选择 Atom 而不是 RSS,但我建议您只使用其中一种。它们代表相同的信息,并且大多数现代提要解析库都支持这两者,所以它们很好:) 检查这个最佳实践:blog.superfeedr.com/Feeds/RSS/Atom/Best%20Practice/… 朱利安,我同意人们应该选择一个并使用它。我只是想为 Atom 提供相同的信息,以便人们在阅读此页面后可以轻松选择其中一个。 只是想补充一点,您应该将 .rss.builder 文件命名为与您为操作(函数)命名的任何名称相同。所以在这种情况下,它应该是 feed.rss.builder 而不是 index.rss.builder。 注意到构建器在 JRuby 上运行不佳。我正在研究其他选项。【参考方案2】:使用 auto_discovery_link_tag:
在控制器中:
respond_to do |format|
format.html
format.atom render action: 'index', layout: false
end
【讨论】:
以上是关于如何在 Rails 3 中制作 RSS/Atom 提要?的主要内容,如果未能解决你的问题,请参考以下文章
用于读取 RSS 和 ATOM 提要的 java 库 [重复]