Rails 2.0特性:复合视图
来源:互联网 发布:加密文件夹软件删除 编辑:程序博客网 时间:2024/05/02 00:53
本文由Ruby中文化团队的Maninred翻译,转载请注明出处,谢谢合作。
原文链接:
http://www.sitepoint.com/blogs/2 ... res-multiple-views/
下一个主要版本的Ruby on Rails(指2.0)加入了复合视图这个新特性。大约上个月底,预览版发布了,我有幸试用了一下,我想及时地概述一下一些新特点。
复合视图
在rails 1.2中,支持多种数据类型的respond_to块被引入,它可以轻松地支持象XML或者JSON。你需要做就是像下面这样:
这种做法的一个问题是,基于扩展文件这种方式没有办法支持不同的HTML页面。因为MIME::Type解析器工作方式是,添加其他MIME类型为text/html的内容标识(handler)会扰乱默认的标识(handler),这意味着上面的代码会提供错误的视图。
输入Mime::Type.register_alias
现在你可以告诉Rails用HTML响应你希望使用的多种文件类型。就是说你想设计一个mobile版本和iPhone版本的站点,你能通过添加下面的代码到/config/initializers/mime_types.rb文件创建两个新的格式:
当rails找到一个匹配的视图就使用它;当找不到时就使用默认的.html.erb或者.rhtml文件。这让你的站点方便地用不同的版本的视图提供服务。
原文链接:
http://www.sitepoint.com/blogs/2 ... res-multiple-views/
下一个主要版本的Ruby on Rails(指2.0)加入了复合视图这个新特性。大约上个月底,预览版发布了,我有幸试用了一下,我想及时地概述一下一些新特点。
复合视图
在rails 1.2中,支持多种数据类型的respond_to块被引入,它可以轻松地支持象XML或者JSON。你需要做就是像下面这样:
CODE:
def index
@stories = Story.find :all
respond to { |format|
format.html {}
format.xml {
render :xml => @stories.to_xml
}
format.json {
render :json => @stories.to_json
}
}
end
然后在浏览器上,如果你加上了扩展文件(比如/stories/index.xml)并得到包括请求格式的内容,那么你可以在environment.rb文件的最后添加MIME::Type.register,来创建自定义的类型。这种做法的一个问题是,基于扩展文件这种方式没有办法支持不同的HTML页面。因为MIME::Type解析器工作方式是,添加其他MIME类型为text/html的内容标识(handler)会扰乱默认的标识(handler),这意味着上面的代码会提供错误的视图。
输入Mime::Type.register_alias
现在你可以告诉Rails用HTML响应你希望使用的多种文件类型。就是说你想设计一个mobile版本和iPhone版本的站点,你能通过添加下面的代码到/config/initializers/mime_types.rb文件创建两个新的格式:
CODE:
Mime::Type.register_alias "text/html", :iphone
Mime::Type.register_alias "text/html", :mobile
这使下面代码可以运作:CODE:
def index
@stories = Story.find :all
respond to { |format|
format.html {}
format.xml {
render :xml => @stories.to_xml
}
format.json {
render :json => @stories.to_json
}
format.iphone {
// Serve up the iPhone version
}
format.mobile {
// Serve up the mobile version
}
}
end
当然,必须在每个respond_to代码块用手工提交不同的版本的做法不太符合DRY原则,所以已经为所有的视图文件创建了一种新的命名惯例。相对于在上面的index.rhtml中调用视图文件,根据你要使用的方式建立三种不同的版本的视图文件更好,比如,index.html.erb, index.iphone.erb 和 index.mobile.erb。当rails找到一个匹配的视图就使用它;当找不到时就使用默认的.html.erb或者.rhtml文件。这让你的站点方便地用不同的版本的视图提供服务。
- Rails 2.0特性:复合视图
- sitemesh 建立复合视图
- rails视图层
- Rails 4.0 新特性
- rails特性总结
- Rails 4.0 新特性
- 为rails添加复合主键和复合外键支持
- 使用sitemesh建立复合视图
- 使用sitemesh建立复合视图
- Ruby on Rails 2.0的新特性介绍(reship)
- Ruby on Rails 2.0的新特性介绍
- Rails 布局和视图渲染
- Rails 3.2 新特性简介
- sitemesh建立复合视图(1)
- sitemesh建立复合视图(2)
- 使用sitemesh建立复合视图 - 1.hello
- 开启x的窗口复合特性
- rails 4 中 通过 程序来 控制复合唯一索引
- [翻译]来自Rails Envy的Rails Cache教程 part1
- Hello World WCF
- [翻译]来自Rails Envy的Rails Cache教程 part2
- Rails,用户认证
- 10分钟在NetBeans6上创建Rails2.0的weblog
- Rails 2.0特性:复合视图
- 不喜欢只有一种身份
- MapObjects开发技术 (VC++)
- Libjingle应用之一——登陆服务器
- rails2.02快速体验
- 真实世界中的 Rails,第 2 部分: 高级页面缓存
- TWebBrowser控件与MSHTML库连接
- 一种不用临时变量的交换swap方法
- 旅行中的商人与负世界 Traveling saleman