- 浏览: 2675016 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
80后的童年2:
深入浅出MongoDB应用实战开发网盘地址:https://p ...
MongoDB入门教程 -
shliujing:
楼主在不是精通java和php的前提下,请不要妄下结论。
PHP、CakePHP哪凉快哪呆着去 -
安静听歌:
希望可以一给一点点注释
MySQL存储过程之代码块、条件控制、迭代 -
qq287767957:
PHP是全宇宙最强的语言!
PHP、CakePHP哪凉快哪呆着去 -
rryymmoK:
深入浅出MongoDB应用实战开发百度网盘下载:链接:http ...
MongoDB入门教程
前面的一篇文章每天一剂Rails良药之Syndicate Your Site With RSS中我们看了怎样手动创建RSS
今天我们来看看Rails开发组提供的一个atom_feed_helper插件,它使得创建atom feeds更容易
首先安装atom_feed_helper插件
我们来看看源码,首先是init.rb
init.rb会在Rails程序启动时自动加载,这段代码表示把AtomFeedHelper include到ActionController::Base
然后我们来看看atom_feed_helper.rb
我们会看到atom_feed()方法和我们创建RSS时代码大同小异,不过是生成的XML的格式稍显不同。
然后我们就可以这样使用了,比如PostsController:
以及posts/index.atom.builder
看见了吧,通过atom_feed()方法简化了我们创建RSS XML的工作
这样生成的Atom为:
代码具体我没有测试过,而大部分时候站点提供RSS就够了
不过通过这个例子的学习,我们可以自己写一个简化RSS创建的插件
今天我们来看看Rails开发组提供的一个atom_feed_helper插件,它使得创建atom feeds更容易
首先安装atom_feed_helper插件
ruby script/plugin install atom_feed_helper
我们来看看源码,首先是init.rb
# Include hook code here ActionController::Base.helper(AtomFeedHelper)
init.rb会在Rails程序启动时自动加载,这段代码表示把AtomFeedHelper include到ActionController::Base
然后我们来看看atom_feed_helper.rb
# Adds easy defaults to writing Atom feeds with the Builder template engine (this does not work on ERb or any other # template languages). module AtomFeedHelper def atom_feed(options = {}, &block) xml = options[:xml] || eval("xml", block.binding) xml.instruct! xml.feed "xml:lang" => "en-US", "xmlns" => 'http://www.w3.org/2005/Atom' do xml.id("tag:#{request.host}:#{request.request_uri.split(".")[0].gsub("/", "")}") if options[:root_url] || respond_to?(:root_url) xml.link(:rel => 'alternate', :type => 'text/html', :href => options[:root_url] || root_url) end if options[:url] xml.link(:rel => 'self', :type => 'application/atom+xml', :href => options[:url]) end yield AtomFeedBuilder.new(xml, self) end end protected class AtomFeedBuilder def initialize(xml, view) @xml, @view = xml, view end def entry(record) @xml.entry do @xml.id("tag:#{@view.request.host_with_port},#{record.created_at.xmlschema}:#{record.class}#{record.id}") @xml.published(record.created_at.xmlschema) @xml.updated(record.updated_at.xmlschema) if record.respond_to?(:updated_at) yield @xml @xml.link(:rel => 'alternate', :type => 'text/html', :href => @view.polymorphic_url(record)) end end private def method_missing(method, *arguments, &block) @xml.__send__(method, *arguments, &block) end end end
我们会看到atom_feed()方法和我们创建RSS时代码大同小异,不过是生成的XML的格式稍显不同。
然后我们就可以这样使用了,比如PostsController:
def index @posts = Post.find(:all, :limit => 25) respond_to do |format| format.html format.atom end end
以及posts/index.atom.builder
atom_feed(:url => formatted_people_url(:atom)) do |feed| feed.title("Address book") feed.updated(@people.first ? @people.first.created_at : Time.now.utc) for post in @posts feed.entry(post) do |entry| entry.title(post.title) entry.content(post.body, :type => 'html') entry.author do |author| author.name(post.creator.name) author.email(post.creator.email_address) end end end end
看见了吧,通过atom_feed()方法简化了我们创建RSS XML的工作
这样生成的Atom为:
<?xml version="1.0" encoding="UTF-8"?> <feed xml:lang="en-US" xmlns="http://www.w3.org/2005/Atom"> <id>tag:localhost:people</id> <link type="application/atom+xml" rel="self" href="http://example.com/people.atom"/> <title>Address book</title> <updated></updated> <entry> <id>tag:localhost:3000,2007-05-18T16:35:00-07:00:Person1</id> <published>2007-05-18T16:35:00-07:00</published> <link type="text/html" rel="alternate" href="http://example.com/people/1" /> <title>The future is now</title> <content type="html">Once upon a time</content> <author> <name>DHH</name> <email>david@loudthinking.com</email> </author> </entry> <entry> <id>tag:localhost:3000,2007-05-18T09:36:00-07:00:Person2</id> <published>2007-05-18T09:36:00-07:00</published> <link type="text/html" rel="alternate" href="http://example.com/people/1" /> <title>Matz</title> <content type="html">This is Matz</content> <author> <name>Matz</name> <email>Matz</email> </author> </entry> </feed>
代码具体我没有测试过,而大部分时候站点提供RSS就够了
不过通过这个例子的学习,我们可以自己写一个简化RSS创建的插件
评论
2 楼
dongbin
2007-06-28
不好意思说错了,我说的是posts/index.atom.builder 这种形式的默认调用。
1 楼
dongbin
2007-06-28
2.0 中内置支持了
发表评论
-
用了TextMate才知道什么叫神级Editor
2011-03-09 04:51 57943一直用Eclipse作为开发Ruby和Java项目的IDE,但 ... -
Ruby使用OAuth登录新浪微博和豆瓣
2011-01-09 12:49 4415首先需要安装oauth这个gem包 gem install ... -
使用Passenger+nginx部署Rails
2010-12-28 15:12 50011. Install Passender gem instal ... -
markItUp+rdiscount搭建Rails下可视化Markdown编辑器
2010-12-21 17:48 5438markItUp是基于jQuery的可视化编辑器,支持Html ... -
Rails3 and MongoDB Quick Guide
2010-12-10 14:13 2751Install MongoDB Download: http: ... -
基于ruby-protobuf的rpc示例
2009-08-11 11:51 41421, 安装ruby-protobuf gem instal ... -
Ruby导出xls和csv的utf-8问题的解决
2009-02-04 15:05 6825数据库数据为utf-8格式,包括中文和拉丁文等等 导出文件xl ... -
URL/HTML/JavaScript的encode/escape
2009-01-04 13:03 9311最近经常被URL、HTML、JavaScript的encode ... -
各种排序的Ruby实现
2008-11-27 14:51 3993Θ(n^2) 1, Bubble sort def bu ... -
12月5日北京RoR活动!
2008-11-26 18:38 3013又是一年过去了,Rails在国内的发展势态良好,很多使用RoR ... -
Rails程序开发的最大问题是代码规范
2008-08-28 11:56 5480使用Rails开发大型复杂B2B应用一年了,这个项目目前开发人 ... -
Web开发大全:ROR版——推荐序
2008-07-09 00:39 2414来自http://www.beyondrails.com/bl ... -
深入ActionMailer,使用Sendmail发邮件
2008-07-03 11:41 3395来自: http://www.beyondrails.com/ ... -
Rails里如何结合ExceptionNotification配置gmail账户发邮件
2008-06-19 19:56 30741,安装ExceptionNotification rub ... -
使用coderay和railscasts样式进行代码高亮
2008-06-17 00:16 2391CodeRay是一个语法高亮的Ruby库,效率很不错。 Cod ... -
Capistrano试用
2008-06-16 19:05 19531,客户端机器安装Capistrano gem insta ... -
lighttpd真垃圾啊
2008-06-04 18:38 2518使用lighttpd+fcgi跑Rails程序,文件上传会si ... -
将gem变成plugin
2008-06-04 11:27 1799有什么样的需求就有什么样的对策 当vhost上的帐号没有ge ... -
在Rails里使用ReCaptcha添加验证码
2008-06-03 15:51 42601,去http://recaptcha.net/sign up ... -
Rails里给文件上传添加progress_bar
2008-05-27 17:00 2083文件上传很慢时,UI没有什么用户提示,这样让人很费解,所以我们 ...
相关推荐
《Rails101_by_rails4.0》是一本专注于Rails 4.0.0版本和Ruby 2.0.0版本的自学教程书籍,它定位于中文读者,旨在成为学习Rails框架的参考教材。Rails(Ruby on Rails)是一个采用Ruby语言编写的开源Web应用框架,它...
rails_apps_composer, 一个 gem,为 Rails 启动应用程序创建 Rails 应用程序模板 Rails 应用编辑器 Rails 应用程序编辑器 gem 安装一个 命令行 工具来从"食谱"的Collection 组装 Rails 应用程序。"你可以使用 rails_...
介绍插件,用于对记录进行排序(使用 gem)安装要启用rails_admin_acts_as_list,请将以下内容添加到您的Gemfile : gem 'rails_admin_acts_as_list'gem 'rails_admin' 重要提示: rails_admin_acts_as_list之前必须...
Api-rails5_api_tutorial.zip,了解如何在michael hartl的rails 5教程上构建一个现代api立即在rails应用程序中构建一个api!(Rails 5版本),一个api可以被认为是多个软件设备之间通信的指导手册。例如,api可用于web...
rails_semantic_logger, Rails 语义记录器用语义记录器替换 Rails 缺省记录器 Rails 语义记录器 语义记录器用语义记录器替代 Rails 缺省记录器。http://github.com/rocketjob/rails_semantic_logger文档有关完整文档...
"inspinia admin - v2.5 Rails_Full_Version" 是一个基于Rails框架构建的后台管理系统的完整版本。这个系统采用流行的Inspinia Admin模板,提供了丰富的功能和自定义选项,旨在帮助开发者快速构建高效、现代且用户...
"Rails Open Flash Chart" 是一个基于Ruby on Rails框架的库,用于在Web应用程序中生成交互式的Flash图表。这个库允许开发者轻松地创建各种统计图表,如折线图、柱状图、饼图等,以便更好地可视化数据。由于Flash在...
在Rails_Full_Version压缩包中,包含了完整的源代码和必要的资源文件,开发者可以通过解压并导入到Rails项目中,按照官方文档进行配置和定制。同时,这个版本可能还包含了升级记录、更改日志和可能的bug修复,以保证...
本资料“RestFul_Rails_Dev_pdf_v_0.1.zip”包含了《RESTful Rails Development》的翻译版,将深入探讨如何在Rails中实现RESTful的设计模式。 首先,RESTful设计的核心概念是资源(Resources)。在Rails中,资源...
《敏捷Web开发与Rails》第三版是一本深入探讨Ruby on Rails框架在敏捷软件开发方法论下的应用指南。本书由多位知名作者共同编写,包括Sam Ruby、Dave Thomas、David Heinemeier Hansson等,他们都是在Ruby社区内享有...
Rails_3_Cheat_Sheets.pdf
Thinking Sphinx 是一个为 Rails 应用程序提供全文搜索功能的插件,它将数据库中的数据与 Sphinx 搜索引擎紧密结合,提供高效且高度定制化的搜索体验。 在 Rails3 中集成 Thinking Sphinx,首先你需要确保你的系统...
这个 gem 在rails_helper.js.coffee.erb.上的编译时间上嵌入了image_path 、 asset_path和路由表rails_helper.js.coffee.erb. RailsHelper有一些功能。 局限性 这个 gem 只能使用没有命名路由的段。 前任。 # ...
Ruby_on_Rails_rails.zip Ruby_on_Rails_rails.zip Ruby_on_Rails_rails.zip Ruby_on_Rails_rails.zipRuby_on_Rails_rails.zip Ruby_on_Rails_rails.zip Ruby_on_Rails_rails.zip Ruby_on_Rails_rails.zipRuby_on_...
rails_best_practices rails_best_practices是用于检查Rails代码质量的代码度量工具。 它支持以下ORM / ODM: 活动记录 蒙古型 mongomapper 以及以下模板引擎: erb 哈姆 减肥 拉布尔 rails_best_practices...
《Rails Recipes with Source Code》是一本专注于Ruby on Rails框架实践技巧和源代码解析的书籍。Rails是基于Ruby语言的Web开发框架,以其“约定优于配置”(Convention over Configuration)的理念和“开发人员的...
gem 'foundation_rails_helper' , '~> 3.0' 然后执行: $ bundle 兼容性 仅完全支持Rails 4.1 / 4.2 / 5/6和Foundation 6 某些功能可能适用于Foundation 5及更早版本,但结果可能会有所不同,并且
### RestFul_Rails_Dev_v_0.1 关键知识点解析 #### 1. REST 概念与背景 REST(Representational State Transfer)是一种软件架构风格,最初由 Roy Fielding 在他的博士论文中提出。它主张使用 HTTP 协议的标准方法...
map_helper 在您的Rails应用程序或其他应用程序中实现Google Maps的简便方法。 ### 依赖关系:jQuery ## Load将map_helper放置在供应商文件夹中。 小贩 JavaScripts map_helper maphelper.coffee /app/assets/...
该模板包含的文件列表“inspinia_admin_v2.5_Rails_Full_Version”很可能包括以下组成部分: 1. **静态资源**:CSS样式文件、JavaScript脚本和图像资源。这些文件用于构建用户界面,包括响应式布局、图表、表单元素...