Ruby on Rails 2.0 日记
第4章 模板文件的扩展名
上一章的SQLite3中,对从 Rails 2.0.2 开始引入的新的默认的轻量级数据库进行了说明。这章是关于 RHTML 模板。
Rails 2.0 一个重要的改变,就是生成HTML文件的模板文件的扩展名变为 .html.erb 。更正确的说法是,.erb 的部分显示了模板系统(模板引擎)的名称。例如,使用 HAML 代替 ERB 的场合,将扩展名设为 .html.haml 。
试一下使用 Rails 的发生器生成控制台。
> script/generate controller top index
确实,app/views/top 目录下生成了名为 index.html.erb 的文件。
也许有人会认为这次的改变没什么用,但是这是 Rails 1.2 开始的 multiview 改革的自然的结果。但是关于这点更深入的探讨我们下回再说。
关于布局与局部模板,同样使用扩展名 .html.erb 。生成下面的app/views/layouts/application.html.erb 文件,并在浏览器上显示。
<html> <head> <title>Title</title> </head> <body> <%= yield :layout %> <hr /> <p>Powered by Ruby on Rails.</p> </body> </html>
页面下部出现水平线与“Powered by Ruby on Rails”。OK了。
照之前的,即使在 Rails 2.0 中也能使用具有 .rhtml 扩展名的模板文件,即使要将用1.x 环境下开发的程序放到 2.0 环境,也没有必要改变扩展名。如果希望改变,就使用下面的 Rake 任务。
namespace 'views' do
desc 'Renames all .rhtml views to .html.erb'
task 'rename' do
Dir.glob('app/views/**/*.rhtml').each do |file|
puts `svn mv #{file} #{file.gsub(/\.rhtml$/, '.html.erb')}`
end
end
end
将此进行适当的命名(例:rename.rake),放在 lib/tasks 目录下,并执行
rake views:rename
的话,便将匹配文件的扩展名一起改变。但是,前提是设定这个任务在 Subversion 管理源代码。想直接改变文件名的时候,将第 5 行做如下改变。
puts `mv -v #{file} #{file.gsub(/\.rhtml$/, '.html.erb')}`
此外,这个 Rake 任务参考了 Rails 2 Upgrade Notes 。
今天就到这里。
(2007/12/22)
- 前言
- 第1章 安装 (2007/12/15)
- 第2章 生成新程序 (2007/12/16)
- 第3章 SQLite3 (2007/12/21)
- 第4章 模板文件的扩展名 (2007/12/22)
- 第5章 功能测试 (2008/01/19)
- 第6章 redirect_to 与 url_for (2008/02/24)
- 第7章 config/initializers 目录 (2008/02/27)
- 第8章 生成 Rails 1.2 的 API 文档 (2008/03/04)
- 第9章 helper :all (2008/05/05)

