icon Web设计的Ruby on Rails

第5章 模板文件的配置与命名规则

Ruby on Rails 使用上很重要的一点,就是记住文件配置与命名相关的规则。

虽然有点麻烦,但是正是因为有一定的规则,在和其他程序员一起工作的时候才不容易产生误解。

我们打开命令提示符,进入到上一章《Rails的安装与Web服务器的启动》中生成的 sample 目录。这个目录叫做 RAILS_ROOT 对吧。然后进入app 目录。

> cd sample
> dir

注意例子开头的 > 不要输入。此外,Mac OS X 或 Linux 中,使用命令 ls 代替 dir

app 目录里存在 4 个子目录,作用分别如下:

  • controllers -- 放置生成传递到模板的数据的程序
  • helpers -- 放置可在模板里调用的辅助方法程序
  • models -- 放置数据库检索程序
  • views -- 放置模板文件

这篇文章里我们不涉及 models 目录。现在忘记 helpers 目录也无妨。

前一章的 RAILS_ROOT/public 目录中,既存的 HTML 文件放置不动,启动 Webrick 试着在浏览器中显示。选择一个 HTML 文件,把扩展名从 .html 变为 .rhtml ,移至 RAILS_ROOT/app/views 目录。

这里要注意一件事。必须放到 RAILS_ROOT/app/views 目录下面的子目录中。初期状态的时候并不存在子目录,所以作一个适当的命名。我们把它叫做top 。并将 RAILS_ROOT/public/about.html 移至 RAILS_ROOT/app/views/top/about.rhtml

接下来做的是生成控制台。这是生成传递到模板的数据的程序。这个程序的文件名,在设置了模板文件的子目录的名字上加上 _controller.rb 作成。像我的就是 top_controller.rb ,放到 RAILS_ROOT/app/controllers 目录中。

top_controller.rb 的内容像下面一样极其简单。

class TopController < ApplicationController
end

这个程序,定义了继承 ApplicationController 类的 TopController 类。继承 是面向对象编程里重要的概念。虽说有各种各样的意思,从 Web 制作来看,类不过就是后面要说明的“动作”的容器。继承就是继承别的类的功能,尽管这样解释有点抽象。另外,Ruby 语言中,类定义是从 classend 结束。用 < 符号表示继承。

再在刚才的 top_controller.rb 中加上一点代码,使“生成传递到模板的代码”这个功能发挥作用。

class TopController < ApplicationController
  def about
    @title = '网站说明'
  end
end

def aboutend ,是 Ruby 语言中定义方法的语法。方法 是子程序的一种,作用是将ruby语句进行归纳并通过命名调出。控制台中定义的方法(准确的是,公开的实例方法)叫做动作

@title 是第2章中学习的实例变量。实例变量可以从模板引用。在此之前说的控制台向模板传递数据,实际就是将生成的数据给模板的意思。

要注意的是控制台对应目录,动作对应模板。举个例子,它们的关系像是控制台 top_controller.rb 的动作 about ,给 RAILS_ROOT/app/views/top 目录的 about.rhtml 模板准备数据。

使用 Rails 制作 Web,对这种关系的透彻的理解是十分重要的。

下一章学习如何从复杂的 YAML 文件中读取数据。

(2007/11/12)