gpt4 book ai didi

ruby-on-rails-3 - 在 Rails 3 中生成 RSS feed

转载 作者:行者123 更新时间:2023-12-03 06:01:23 24 4
gpt4 key购买 nike

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

最佳答案

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

ATOM feed 的规范在国际化、内容类型和其他方面比 RSS 规范提供了更多的值(value),并且每个现代 feed 阅读器都支持它。

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

<小时/>

编码:

此示例假设:

  • 名为 NewsItem 的模型具有以下属性:
  • title
  • content
  • author_name
  • 该模型的 Controller ( news_items_controller.rb ),您将向其中添加 feed行动

我们将为此使用构建器模板和 Ruby on Rails atom_feed helper这很有用。

<强>1。将操作添加到 Controller

转到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。设置您的构建器模板

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

转到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/feed.atom .

转到config/routes.rb并添加:

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

<强>4。在布局上添加 ATOM 和 RSS 源的链接

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

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

<%= auto_discovery_link_tag :atom, "/feed" %>
<%= auto_discovery_link_tag :rss, "/feed.rss" %>

关于ruby-on-rails-3 - 在 Rails 3 中生成 RSS feed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4827232/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com