在 Rails 3 中生成 RSS feed

2024-01-10

我正在寻找在 Rails 3 中生成提要的最佳实践/标准模式。是http://railscasts.com/episodes/87-generate-rss-feeds http://railscasts.com/episodes/87-generating-rss-feeds仍然有效?


首先,现在我建议使用 ATOM feed 而不是 RSS.

ATOM feed 的规范在国际化、内容类型等方面比 RSS 提供更多价值and每个现代提要阅读器都支持它。

有关 ATOM 与 RSS 的更多信息可以在以下位置找到:

  • the 维基百科 ATOM 条目 http://en.wikipedia.org/wiki/Atom_(standard)#Atom_compared_to_RSS_2.0
  • 专业博主 http://www.problogger.net/archives/2006/03/30/rss-vs-atom-whats-the-big-deal/ and 自由营销区 http://www.freemarketingzone.com/rss/atom-vs-rss.html关于该主题的博客文章

继续编码:

此示例假设:

  • 一个名为NewsItem具有以下属性:
  • title
  • content
  • author_name
  • 该模型的控制器(news_items_controller.rb),您将在其中添加feed action

我们将为此使用构建器模板和 Ruby on Railsatom_feed 助手 http://api.rubyonrails.org/classes/ActionView/Helpers/AtomFeedHelper.html这是很有用的。

1. 将动作添加到控制器中

Go to app/controllers/news_items_controller.rb并添加:

def feed
  # this will be the name of the feed displayed on the feed reader
  @title = "FEED title"

  # the news items
  @news_items = NewsItem.order("updated_at desc")

  # this will be our Feed's update timestamp
  @updated = @news_items.first.updated_at unless @news_items.empty?

  respond_to do |format|
    format.atom { render :layout => false }

    # we want the RSS feed to redirect permanently to the ATOM feed
    format.rss { redirect_to feed_path(:format => :atom), :status => :moved_permanently }
  end
end

2. 设置您的构建器模板

现在让我们添加模板来构建提要。

Go to app/views/news_items/feed.atom.builder并添加:

atom_feed :language => 'en-US' do |feed|
  feed.title @title
  feed.updated @updated

  @news_items.each do |item|
    next if item.updated_at.blank?

    feed.entry( item ) do |entry|
      entry.url news_item_url(item)
      entry.title item.title
      entry.content item.content, :type => 'html'

      # the strftime is needed to work with Google Reader.
      entry.updated(item.updated_at.strftime("%Y-%m-%dT%H:%M:%SZ"))

      entry.author do |author|
        author.name entry.author_name
      end
    end
  end
end

3. 将其与路线连接起来

让我们在以下位置提供提要:http://domain.example/feed

这将默认调用 ATOM 格式的操作并重定向/feed.rss to /feed.atom.

Go to config/routes.rb并添加:

resources :news_items
match '/feed' => 'news_items#feed',
      :as => :feed,
      :defaults => { :format => 'atom' }

4. 在布局上添加 ATOM 和 RSS feed 的链接

最后,剩下的就是将提要添加到布局中。

Go to app/views/layouts/application.html.erb并将其添加到您的<head></head>部分:

<%= auto_discovery_link_tag :atom, "/feed" %>
<%= auto_discovery_link_tag :rss, "/feed.rss" %>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Rails 3 中生成 RSS feed 的相关文章

  • PHP 读取 XML 播客 RSS 源

    好的 我正在为朋友的播客网站创建一个页面 列出他的播客的所有剧集 本质上 我所寻找的只是如何阅读 RSS 提要 解析出节点 并将信息显示在屏幕上 最终 我将创建一个可以播放剧集的播放器 但那是很久以后的事了 这就是我阅读 RSS 源的方式
  • Rails 3.1 引擎迁移不起作用

    我正在创建一个带有迁移的 Rails 3 1 引擎 rake db migration 在该引擎和主机应用程序内运行良好 但我需要将此引擎包含到另一个 Rails 引擎中 第二个引擎包含用于测试的虚拟应用程序 我将这一行添加到该虚拟应用程序
  • 延迟的作业更新查询正在无限运行

    我在 Rails 应用程序中使用delayed job 和delayed job active record 来执行后台作业 我们正在使用基于队列的delayed job 为了启动延迟 我使用以下命令 RAILS ENV staging s
  • Rails 3.1 + 回形针 + jQuery 文件上传

    我一直在寻找一种设置 Ruby on Rails 3 1 的方法回形针 https github com thoughtbot paperclip and jQuery 文件上传 https github com blueimp jQuer
  • 设计对多个并发会话的支持

    我使用 Rails 3 2 11 和 Devise 2 2 3 作为订阅服务应用程序 我从另一位不再可用的开发人员那里继承了该应用程序 我是 Rails 和 Devise 的新手 我想要允许单个用户 电子邮件 拥有多个会话到同一个应用程序
  • “after_filter”如何/何时工作/运行?

    我正在使用 Ruby on Rails 3 1 我想知道 对于表现原因 无论是否after filter渲染视图文件后运行 也就是说 当用户访问我的应用程序 URL 时 他 她应该显示的相关视图文件先于渲染after filter运行或af
  • FB API 调用中“无法代表此用户调用 API”

    我在调用 facebook API 时遇到问题 我正在使用 Koala 进行服务器端 api 调用 但最近在进 行 api 调用时遇到问题 所以我尝试绕过 koala 调用并使用 call 进行原始 api http 调用 但无济于事 当我
  • Rails 3、mysql/mysql2 将某些检索到的字符串误解为 ASCII-8BIT

    这个问题最初是常见的 字符编码不兼容 ASCII 8BIT 和 UTF 8 问题 但事实是not我在问什么 相反 我发现发生此问题是因为数据库的某些字段在检索时被标记为 ASCII 8BIT 而大多数字段正确显示为 UTF 8 例如 在包含
  • Rails 3:使用 AJAX 请求更新 URL 参数

    我有一个过滤器和一个产品列表 id 名称 创建日期 我可以按 ID 名称或创建日期进行过滤 通过 AJAX 请求 我更新了内容 div 但显然 URL 没有改变 如何将参数附加到 URL 例如 localhost 3000 dashboar
  • 为什么我不能让 rake db:migrate 为 ruby​​.railstutorial.org 工作

    我决定完成教程 创建新应用程序并添加新应用程序后user string email string然后执行rake db migrate在应用程序目录中 我得到以下输出 rake aborted undefined method task f
  • 使用 kaminari 查找给定记录的页面

    Ruby on Rails 3 项目 更新记录后 我们返回所有记录的索引 不是更新记录的视图 该索引通过 Kaminari 进行分页 我们如何返回到包含更新记录的索引页面 Java JPA Hibernate 有类似的问答使用 JPA Hi
  • Rails - 动态构建深度嵌套对象(Cocoon /nested_form)

    我目前有一个具有深层嵌套的复杂形式 并且我正在使用Cocoon https github com nathanvda cocoongem 根据需要动态添加部分 例如 如果用户想要在销售表单中添加另一辆车 代码如下所示 div class a
  • 如何验证数值的小数位数?

    我在中间进行了验证 如下所示 validates numericality of shoe size message gt Please input a number 但这还不够 因为用户可以输入一些值 例如 42 222222221212
  • 在代码中的其他地方设计渲染符号=>向上/形式部分

    我刚刚开始使用 Devise 和 Rails3 我已经完成了身份验证并正在工作并了解基础知识 截至目前 在代表我的主页 首页的主控制器中 我有两个链接 一个链接到 注册 gt sign up 另一个链接根据登录 注销 gt sign in
  • 使用Rails UJS,如何从函数提交远程表单

    我正在使用Rails UJS 我有一个表单设置来进行远程提交 如下所示
  • 如何在 HAML 中为 Devise 生成视图

    这是我的 Gemfile gem haml group development do gem hpricot gem ruby parser end 然后我在终端 命令窗口中执行以下语句 bundle install rails gener
  • Rails 4 的 mobile_fu

    我正在尝试将我的应用程序从 Rails 3 2 13 切换到 Rails 4 在此过程中 我遇到了一个主要障碍 我使用 gem mobile fu 来确定用户是否来自移动设备 该 gem 需要 Railties 3 2 13 但 Rails
  • 如何在两个模型之间建立两个 has_many/belongs_to 关系?

    我有一个Project模型 以及一个Contact模型 项目模型有一个所有者和一个客户 两者都是Contacts 显然我遇到了一些不明确的事情 因为如果我有联系人并询问其项目 Rails 将不知道我询问的是它的项目是客户还是所有者 到目前为
  • 检查rails devise ldap gem中的组成员身份,是否在yaml中?

    我是否应该使用 ldap yml 文件来确保使用 ldap 进行身份验证的人拥有分配给他们的正确组以允许他们进入 无论如何 我都不是 AD 专业人士 这让我很困惑 什么是组和属性 据我了解 我们在 AD 中有一个用户 他们有一个 samAc
  • 用于验证目的的动态查找方法

    我正在使用 Ruby on Rails 3 0 7 我想在运行时查找一些记录以进行验证 但为该查找方法传递 设置一个值 也就是说 在我的班级中 我有以下内容 class Group lt lt ActiveRecord Base valid

随机推荐

  • Android 无法绑定到服务(在应用程序计费中)

    我正在尝试在我的应用程序中实现应用程序计费 但我遇到了一些问题 我正在使用 Android 开发人员网站上的示例 每次我启动将连接到计费服务的活动时 它都会向我显示一个无法连接到服务器的对话框 当我按 了解更多 时 它会转到一个正在解释我的
  • 将右侧“完成”按钮 (UIBarButtonItem) 添加到 UINavigationController

    我看到这里有人问了类似的问题 如何向 UINavigationController 添加右键 https stackoverflow com questions 1219779 how to add a right button to a
  • VS Code 找不到 python 3 解释器

    我是第一次安装 Python 3 7 2 并且使用 VS Code python 扩展 当我跑步时python V I get Python 2 7 10这是不正确的 当我选择usr local bin python3VS Code 中的解
  • 一个应用程序中有两个 google-services.json (具有不同的帐户)

    是否可以在 Android 应用程序中使用两个不同的帐户来访问谷歌的两种不同服务 我想通过帐户使用 Google Analytics 分析 电子邮件受保护 cdn cgi l email protection和 Firebase 帐户崩溃报
  • “git checkout <文件名>”和“git checkout -​- <文件名>”之间的区别

    http norbauer com notebooks code notes git revert reset a single file http norbauer com notebooks code notes git revert
  • 主要编译器/工具链对 C99 的支持状况如何?

    对我在这里发表的评论的回应让我停下来思考 我真的不知道 C99 支持的状况如何 维基百科提供了一些编译器的详细信息 但我对 C99 不够熟悉 无法了解该标准的所有细节 因此我正在寻找该问题的格式塔概述答案 主要编译器 工具链对 C99 的支
  • ggplot2 的小提琴图与 x 轴上的数据集的顺序不同

    I created the using below code But on the x axis Models name are not in order as in the data set i e Observed SVM Grid S
  • 如何用CMake安装依赖库?

    我想安装所有依赖库 为了做到我所做的 install FILES path external dll DESTINATION lib 但是 我已经配置了路径 和库 target link libraries target link libr
  • 我正在尝试应用多标签分类

    我正在尝试应用多标签分类 形状是 x train shape 3975 3788 y train shape 3975 66 x test shape 994 3788 y test shape 994 66 当我尝试训练时 出现以下错误
  • 迭代 Pandas 中的行和列

    我正在尝试填充列中所有 NaN 值的平均值 import numpy as np import pandas as pd table pd DataFrame A 1 2 np nan B 3 np nan np nan C 4 5 6 d
  • 对 Promise 中 thenable 回调的工作方式感到困惑吗?

    我是 JS 的新手 正在学习 Promise 我想展示的代码摘录是这样的 promisedFunction then data gt console log data 或者简单地 promisedFunction then console
  • 使用严格会导致未定义的函数

    我正在尝试组织我的 js 文件并遵循建议的模块模式 当我在此模式中使用 use strict 时 函数被声明为未定义 如果没有 use strict 方法 该函数就可以正常工作 是否建议使用严格模式 如果是 为什么该功能在使用它时不起作用
  • 如何在android平台的unity3d中使用c#线程?

    我需要加载文件 场景并在线程中播放动画 尝试在 Android 中通过 www 加载文件 如何通过线程做其他事情 但是为什么游戏引擎不允许我们创建线程呢 或者我的理解是错误的 如何在 UNITY3D 中创建线程 您可以在 Unity 中使用
  • 取消设置会话 PHP 不能正常工作

    我想在单击注销按钮时取消设置用户名和购物车 如果我想放置 如果单击注销 那么会话将取消设置 我应该怎么做 我的代码有效 然而 当我再次点击登录时 登录信息不存储在会话中 它不断要求我再次登录 而不是进行通常的流程 我可以知道出了什么问题吗
  • 使用 System.IO.Packaging 在 C# 中创建 zip

    我正在尝试在服务器上动态创建 zip 文件 其中包含来自在线服务的照片 但是当我尝试打开该文件时 WinRar 说该文件格式未知或已损坏 这是代码 MemoryStream stream new MemoryStream Package p
  • 将值替换为在 unix shell 中对值调用函数的结果

    我有一个如下所示的文本流 s123456789 9780 heartbeat test 1344280205000000 0 heartbeat test 1344272490000000 0 这些长数字是以微秒为单位的时间戳 我想通过某种
  • 如何在ctypes python中传递char指针作为参数

    请帮助我将以下 c 代码行转换为 ctypes python Ret openFcn Handle C Config xml 以下是各自的声明 typedef uint16 t OpenDLLFcnP void const char Ope
  • 如何从 ASPX 控件事件调用 Javascript 函数?

    如何从 ASPX 控件事件调用 Javascript 函数 具体来说 我想从 DropDownList 的 SelectedIndexChanged 事件中调用该函数 每当我看到这种问题时 我都会有点紧张 因为十有八九这意味着提问者并不真正
  • 前景窗口与活动窗口

    在Windows中 前台窗口和活动窗口有什么区别 具体来说 什么情况下前台窗口不能是活动窗口 如果这两个术语指的是同一概念 那么为什么有两个术语 The msdn documentation here mentions clicking a
  • 在 Rails 3 中生成 RSS feed

    我正在寻找在 Rails 3 中生成提要的最佳实践 标准模式 是http railscasts com episodes 87 generate rss feeds http railscasts com episodes 87 gener