Ruby on Rails Tutorial (Michael Hartl)中文翻译第三章 静态页面 (2)_Ruby_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > Ruby > Ruby on Rails Tutorial (Michael Hartl)中文翻译第三章 静态页面 (2)

Ruby on Rails Tutorial (Michael Hartl)中文翻译第三章 静态页面 (2)

 2010/12/26 9:47:17  iseesea  http://iseesea.javaeye.com  我要评论(0)
  • 摘要:3.1.1真正的静态页面让我们从真正的静态页面开始学习吧,回顾一下第1.2.5中关于每一个Rails程序一开始就就是一个非常小的程序(主要是Rails脚本的功劳,例如生成器)而且都有一个默认的欢迎页面(地址:http://localhost:3000/(图1.3).)(图1.3第一章的图片,rails程序创建时默认的欢迎页面。)图片3.2public/index.html文件(默认欢迎页面)看一下上图中代码,我们学习一下这个页面是从哪里来的。因为这个页面把样式直接包括进去,所以看起来有点乱
  • 标签:翻译 rails Ruby RIA
3.1.1 真正的静态页面
让我们从真正的静态页面开始学习吧,回顾一下第1.2.5中关于每一个Rails程序一开始就就是一个非常小的程序(主要是Rails脚本的功劳,例如生成器)而且都有一个默认的欢迎页面(地址:http://localhost:3000/ (图1.3).)


(图1.3 第一章的图片,rails程序创建时默认的欢迎页面。)




图片3.2 public/index.html文件(默认欢迎页面)

看一下上图中代码,我们学习一下这个页面是从哪里来的。因为这个页面把样式直接包括进去,所以看起来有点乱,但是他的主要功能是:Rails将会把public文件夹下面的任何文件提供给浏览器。其中index.html文件是非常特别的,当你没有指定url地址的时候(http://localhost:3000/)他就是默认提供给浏览器的页面。当然你也可以包含它(http://localhost:3000/index.html)是没有区别的。
正如你所想的,如果我们喜欢,我们可以吧我们自己的静态网页像index.html文件一样放在public目录底下。所为例子,让我们创建一个问候用户的页面(代码3.3)。
$ mate public/hello.html


代码3.3 问候的HTML页面
<!DOCTYPE html>
<html>
  <head>
    <title>Greeting</title>
  </head>
  <body>
    <p>Hello, world!</p>
  </body>
</html>

在代码3.3中,我们看到一个典型的HTML文件:在头部声明document type(或者doctype),告诉浏览器HTML的版本(我们使用HTML5),在HTML的head中,我们设置“Greeting”作为title标签,在Body里面,我们在一个段落标签里放入了“Hello,world!”(上面的缩进可以不必理会,HTML的空格和tab键没影响。加上必要的排版可以让我们的文档更方便查看。)。好了,和上面说的一样,我们可访问地址:
http://localhost:3000/hello.html,Rails将会直接将页面返回给我们(图3.3)。
(HTML文本的title在浏览器的顶部。)




图3.3我们自己的静态网页
上述页面只是为了示范而已。它可不是我们程序的一部分,所以我们应该删除掉它。

$ rm public/hello.html

我们先把index.html文件放一边,当然我们最终是要删除掉它的,我们可不想我们程序的根目录总是如图1.3所示那样的Rails默认页面。我们将会在第5.2节中学习如何让我们的地址“http://localhost:3000/”不指向public/index.html

3.1.2 Rails静态页面


可以返回静态页面是值得让人兴奋地,但是这对于开发一个动态web程序的来说并不是很有用。在这一节,我们学习创建动态页面的第一步:创建一些Rails的action方法,这些方法定义URL的能力比静态页面强很多。Rails的action方法在控制器里。第二章惊鸿一瞥的REST架构,我们将要在第六章深入的学习。本质上,controller是一组网页页面(可能是动态)的容器。

我们从回忆第1.3.5节中,我们如何使用Git开始,将我们工作的内容单独放在一个分支里面比直接在master分支更值得我们借鉴。如果你使用Git版本控制,你可以运行一下代码
$ git checkout -b static-pages

Rails里面我们可以使用一个Generate的脚本来创建控制器;他的神奇之处就在于我们所要做的只是想一个控制器的名称。
由于我们的这个控制器主要用来处理静态页面,我们就叫他,Pages,而且我们希望给他几个action去响应Home page,contact page,和about page。我们可以在generate 脚本后面更上几个可选的参数作为actions,我们可以看到结果如下:
代码3.4 创建Pages控制器
$ rails generate controller Pages home contact
      create  app/controllers/pages_controller.rb
       route  get "pages/contact"
       route  get "pages/home"
      invoke  erb
      create    app/views/pages
      create    app/views/pages/home.html.erb
      create    app/views/pages/contact.html.erb
      invoke  rspec
      create    spec/controllers/pages_controller_spec.rb
      create    spec/views/pages
      create    spec/views/pages/home.html.erb_spec.rb
      create    spec/views/pages/contact.html.erb_spec.rb
      invoke  helper
      create    app/helpers/pages_helper.rb
      invoke    rspec

(注意,我们使用rails generate rspec:install来安装了Rspec所以,控制器自动在spec目录底下,生成了Rspec的测试文件。)。在这里,我故意遗忘了about page,我们可以在下一节3.2中学习如何手动添加它。
代码3.4中生成控制器的时候已经更新了routes的文件(位于config/routes.rb),Rails用该文件来查找URL和网页之间的对应关系。这是我们第一次遇到config这个文件夹,所以我们应该来快速的过一遍这个文件夹(如图3.4)。这个文件夹是rails放置一些配置文件的目录,故称其名。



图3.4 实例程序中config文件夹的目录内容

由于我们生成了home和contact的action方法,所以,routes文件已经为每一个action配置好了规则,如代码3.5:
代码3.5 page控制器中home和contact的路由规则
config/routes.rb
SampleApp::Application.routes.draw do
  get "pages/home"
  get "pages/contact"
  .
  .
  .
end

规则:
引用
发表评论
用户名: 匿名