Hello, Rails

[size=medium]
我们实在没办法——每次要试用一个新系统时,都得写一个“Hello, World!”程序。在Rails
中,这个程序会把我们诚挚的问候发送到浏览器上。

Rails应用的架构”中所介绍的,Rails是一个MVC框架。Rails接收来自
浏览器的请求,对请求进行解读以找到合适的控制器,再调用控制器中合适的方法。然后,控制器又调用
一个特定的视图,将结果显示给用户。好消息是,Rails已经帮我们搞定了绝大部分的“管道代码”,这
几部分已经被有机地结合在一起。现在,为了写出这个简单的“Hello, World!”应用,我们需要编写一个控制器和一个视图。我们不需要编写模型,因为我们不需要处理任何数据。那么就从控制器开始吧

就像用rails命令新建一个Rails 应用程序一样,我们也可以借助一个脚本来新建一个控制器。
这个脚本名叫generate,它就保存在demo 项目的script子目录中。所以, 要创建一个名为Say
的控制器,我们只需要在demo目录中运行这个脚本,将控制器的名称传递进去即可

demo> [color=blue]ruby script/generate controller Say [/color]
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


脚本显示出了它所检查的文件与目录,以及它所添加的 Ruby 源代码和目录。现在,我们感兴趣的
是它创建的Ruby 源程序,以及新增的目录。
我们首先要关注的是控制器的源代码,它位于 app/controllers/say_controller.rb文件
中,让我们来看看这个文件:

所有代码如下:
class SayController < ApplicationController
end
几乎不能再小了,不是吗? SayController 是一个空的类,它从ApplicationController
继承而来,因此它自动地拥有所有默认的控制器行为。现在该我们动手了,我们需要在这个控制器中增加
一些代码,用来处理用户请求。这些代码应该做什么?现在什么都不需要做——我们只需要一个空的
action方法。所以,下一个问题就是:这个方法应该叫什么名字?这个问题的答案是:我们需要先来看
看Rails 处理请求的方式。

[b]Rails和请求URL [/b]

Rails 会根据路径来判断控制器的名称,以及控制器内部将被调用的action 名称
5
,如图4.2
所示。在路径中,紧跟在应用程序名称后面的第一部分是控制器名称,第二部分是action 名称,如图

[img]http://dl.iteye.com/upload/attachment/0076/4670/f3fb4411-a448-38b9-a62d-67acb1ba7fa1.jpg[/img]
我们的第一个action
Our First Action

我们来给Say 控制器加上一个名为hello的action 。从前一节的讨论可以得知,如果在
SayController类中创建一个hello方法,就意味着加上了名为hello的action 。但这个方法应
该做什么?现在它什么都不需要做。请记住,控制器的职责就是为视图的显示提供充分信息。在我们的第
一个应用程序中,没有任何信息需要控制器提供,因此一个空的action方法就足够了。请用你最喜欢
的编辑器修改app/controllers目录下的say_controller.rb文件,在其中加上hello()方法并
保存:
work/demo1/app/controllers/say_controller.rb
class SayController < ApplicationController
def hello
end
end

运行:ruby script/server
http://localhost:3000/say/hello
[img]http://dl.iteye.com/upload/attachment/0076/4672/451b750a-3e9d-3119-8e03-aea388a1b5a0.jpg[/img]
MVC 我们只写了C controller, M model没有,View我们还没写呢
[img]http://dl.iteye.com/upload/attachment/0076/4674/def0eecb-eacf-31de-847a-4d916b0abdac.jpg[/img]
在这里,我们创建了一个名为Say的控制器,因此视图就应该位于app/views/say
目录中。

为了完成这个“Hello, World!”应用程序,我们来创建一个模板。默认情况下,Rails会寻找
与当前action 同名的模板文件。在我们的例子中,这就意味着我们要创建一个名为
app/views/say/hello.html.erb
7
的文件(为什么是.html.erb?我们稍后就会解释)。现在,我们
只须在其中放入基本的HTML 代码。
work/demo1/app/views/say/hello.html.erb
<html>
<head>
<title>Hello, Rails!</title>
</head>
<body>
<h1>Hello from Rails!</h1>
</body>
</html>

保存hello.html.erb文件,刷新浏览器窗口,你就应该看到一句友好的问候。请注意,我们不需要重新启动应用程序就可以看到更新后的效果。在开发的过程中,每当你保存文件时,Rails就会自动将修改结果整合到正在运行的应用程序中去。

[img]http://dl.iteye.com/upload/attachment/0076/4682/c83aca22-2eaa-397d-a467-a88bcd848469.jpg[/img]
到目前为止,我们在两个文件中添加了代码:在控制器中添加了一个action,又创建了一个模板
以便在浏览器上显示页面。这些文件都位于预先定好的标准位置:控制器在app/controllers目录下,视图在app/views中各自的子目录下

[img]http://dl.iteye.com/upload/attachment/0076/4684/5eb03b7a-5022-3de2-b714-c4a44c525f3c.jpg[/img]
[/size]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值