在 Rails 中创建动态 RSS 视图需配置路由、控制器获取数据并使用 builder 模板生成 xml,通过 rss.rss.builder 文件定义频道信息与文章条目,结合 auto_discovery_link_tag 实现订阅自动发现,从而提供标准 RSS 订阅源。

RSS(Really Simple Syndication)是一种用于发布经常更新内容的格式,比如博客文章、新闻条目或播客。在 ruby on Rails 应用中生成 RSS,可以让用户通过 RSS 阅读器订阅你的内容更新。Rails 借助 Action View 的 .rss 模板和 Builder 支持,能轻松创建动态 RSS 视图。
如何在 Rails 中创建动态 RSS 视图
要在 Rails 应用中为资源(如博客文章)生成 RSS 订阅源,你可以按照以下步骤操作:
1. 配置路由
首先,在 config/routes.rb 中为 RSS 订阅添加路由:
get ‘articles/rss’, to: ‘articles#rss’
这会将 /articles/rss 映射到 ArticlesController 的 rss 动作。
2. 在控制器中准备数据
在 ArticlesController 中定义 rss 动作,获取需要发布的文章数据:
def rss
@articles = Article.published.limit(20).order(created_at: :desc)
end
这个动作获取最近发布的 20 篇文章,并按时间倒序排列。
3. 创建 RSS 模板(.rss.builder 文件)
Rails 使用 Builder 模板引擎来生成 XML 格式的 RSS。在 app/views/articles/ 目录下创建名为 rss.rss.builder 的文件:
xml.instruct! :xml, version: “1.0”
xml.rss version: “2.0”, “xmlns:atom” => “http://www.w3.org/2005/atom” do
xml.channel do
xml.title “我的博客 – 最新文章”
xml.description “这里分享技术文章与思考”
xml.link articles_url
xml.atom :link, href: articles_rss_url, rel: “self”, type: “application/rss+xml”
@articles.each do |article|
xml.item do
xml.title article.title
xml.description article.body.truncate(500)
xml.pubDate article.created_at.to_s(:rfc822)
xml.link article_url(article)
xml.guid article_url(article), isPermaLink: “true”
end
end
end
end
说明:
- xml.instruct! 输出 XML 声明
- rss channel 包含 feed 的元信息
- atom:link 提供自引用,帮助阅读器发现订阅地址
- item 对应每篇文章,包含标题、摘要、发布时间、链接和唯一标识
4. 可选:在页面中添加 RSS 发现链接
为了让浏览器或阅读器自动发现 RSS 源,可以在布局文件(如 application.html.erb)的 <head> 中加入:
<%= auto_discovery_link_tag(:rss, articles_rss_path, title: ‘RSS 订阅最新文章’) %>
这样用户使用 RSS 阅读器访问网站时,能自动检测到订阅源。
基本上就这些。通过几行代码,Rails 就能为你生成标准兼容的 RSS 订阅源,方便用户追踪内容更新。整个过程不复杂但容易忽略细节,比如日期格式或 GUID 设置。只要模板写对,就能稳定输出动态内容。