第1章 快速建立第一个Rails应用
1.1 新建立一个应用程序
创建Rails应用程序有两种途径,一是从头开始编写每行代码,二是用rails工具来帮助我们构造应用程序。
我是选择第二种,因为我不是苦行僧式的人类,我是标准的懒人。
开始建立:
1.通过cmd进入命令窗口
2.创建一个工作目录
我的是E:/work/rails
3.在工作目录中创建demo应用程序
E:/work/rails>rails demo
create
create app/controllers
create app/helpers
create app/models
create app/views/layouts
create config/environments
create components
create db
create doc
create lib
create lib/tasks
create log
create public/images
create public/javascripts
create public/stylesheets
create script/performance
create script/process
create test/fixtures
create test/functional
create test/integration
create test/mocks/development
create test/mocks/test
create test/unit
create vendor
create vendor/plugins
create tmp/sessions
create tmp/sockets
create tmp/cache
create Rakefile
create README
create app/controllers/application.rb
create app/helpers/application_helper.rb
create test/test_helper.rb
create config/database.yml
create config/routes.rb
create public/.htaccess
create config/boot.rb
create config/environment.rb
create config/environments/production.rb
create config/environments/development.rb
create config/environments/test.rb
create script/about
create script/breakpointer
create script/console
create script/destroy
create script/generate
create script/performance/benchmarker
create script/performance/profiler
create script/process/reaper
create script/process/spawner
create script/runner
create script/server
create script/plugin
create public/dispatch.rb
create public/dispatch.cgi
create public/dispatch.fcgi
create public/404.html
create public/500.html
create public/index.html
create public/favicon.ico
create public/robots.txt
create public/images/rails.png
create public/javascripts/prototype.js
create public/javascripts/effects.js
create public/javascripts/dragdrop.js
create public/javascripts/controls.js
create public/javascripts/application.js
create doc/README_FOR_APP
create log/server.log
create log/production.log
create log/development.log
create log/test.log
E:/work/rails>
|
Rails会像神经病一样,给你建了N多的目录和文件。
4.启动http server服务
在demo目录下,键入
ruby script/server
|
5.IE访问
6.停止服务
在命令窗口下按一Ctrl-C键
1.2 Hello World
从当程序员开始,也记不清到底写过多少Hello World了,只知识它的出现是一个新的开始。
在Rails中,为了要显示Hello World,我们要编写一个器和一个视图。
从控制器开始:
通过generate脚本建立控制器,它保存在demo项目下的script目录中。
现在我们要建立一个say的控制器。
E:/work/rails/demo>ruby script/generate controller Say
exists app/controllers/
exists app/helpers/
create app/views/say
exists test/functional/
create app/controllers/say_controller.rb
create test/functional/say_controller_test.rb
create app/helpers/say_helper.rb
E:/work/rails/demo>
|
建立后控制器的源码存放在app/controllers/say_controller.rb文件中。
class SayController < ApplicationController
end
|
SayController是一个空类,它继承了ApplicationController。
1.3 Rails请求URL
Rails的url请求很特别,如果从事j2ee或.net开发人员来看,确实有点怪怪的。
http://pragprog.com/online/demo/
say
/hello
|
绿色:应用地址
红色:控制器名称
蓝色:要访问的活动
1.4 我们的第一个action
l 编写控制器
编辑app/controllers目录下的say_controller.rb文件,如下:
class SayController < ApplicationController
def hello
end
end
|
l 编写视图
缺省情况下,Rails会录找与当前action同名的模板文件。在我们的例子中我们要创建一个名为app/view/say/hello.rhtml的文件。
<html>
<head>Hello,World</head>
<body>
hello form Rails
</body>
</html>
|
从浏览器访问
http://127.0.0.1:3000/say/hello就会看到结果
1.5 让它动起来
动态内容
Rails有两种方式可以创建动态页面,一种是用“构建器”(Builder),以后在介绍。另一种是我们现在用的,将Ruby代码嵌入到模板中,主跟ASP、PHP、JSP差不多。
rhtml将告诉Rails借助ERb系统对文件内容进行解释。<%%>之间就是Ruby代码区,<%=%>则是显示计算出的结果,这跟jsp中的规则差不多。
修改的hello.rhtml,加入
<u1>
<li>Addition:<%=1+2%></li>
<li>Concatenation:<%= "cow" + "boy" %></li>
<li>Time in one hour:<%= 1.hour.from_now %></li>
</u1>
|
显示结果
Hello,World hello form Rails
·
Addition:3
·
Concatenation:cowboy
· Time in one hour:Fri Sep 29 15:18:19 +0800 2006
|
(到现在为止,我还没感觉到
Rails
有什么强大,止少跟
jsp
比,不过现在感觉到它的一大优点是,在多数更改代码时,都不用重新启动服务器)
1.6 通过控制器传入变量,在页面显示
我们的目标是在页面显示当前时间,变量从控制器中计算,然后从页面中得到并显示。
更改控制器
class SayController < ApplicationController
def hello
@time = Time.now
end
end
|
更改视图
<p>
It is now <%=@time %>
</p>
|
1.7 把页面连起来
我的目地是从一个视图跳传到另一个视图。
步骤:
1.在action中添加一个goodbye
class SayController < ApplicationController
def hello
@time = Time.now
end
def goodbye
end
end
|
2.在app/views/say下建立一个模板,名称与action的名字匹配goodbye.rhtml.
<html>
<head>See You Later!</head>
<body>
<h1>Goodbye!</h1>
</body>
</html>
|
3.将两个网页串链起来
方式一:
(比较传统)
编辑hello.rhtml
<p>
Say <a href="/say/goodbye">GoodBye</a>
</p>
|
编辑goodbye.rhtml
<p>
Say <a href="/say/hello">Hello</a>
</p>
|
方式二:(Rails
独创)
编辑hello.rhtml
<p>
rails Say <%= link_to "GoodBye!", :action => "goodbye" %>
</p>
|
编辑goodbye.rhtml
<p>
Rails Say <%= link_to "Hello" , :action => "hello" %>
</p>
|
在<%= %>中嵌入了link_to()的调用,结果是一人goodby()这个action的URL。
第一个参数是超链接显示的文字,第二个参数告诉Rails如何生成超链接。
:action是一个Ruby的符号,冒号可以看作“名叫某某某的东西”,的怪
:action就代表名称action的东西。
=>”goodbye”则将”goodbye”这个字符串与action这个名字关联起来。