快速业务通道

Ruby on Rails的控制器纵览 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-14

Ruby on Rails的控制器纵览

时间:2011-11-09

在一个基于MVC的Web应用程序中,应用程序逻辑以及数据的存取是由MVC中的C,也就是控制器来完成的。因此,深刻地理解MVC框架所提供控制器对于开发一个高效、可升级、稳定的应用程序是十分必要的。RoR也不例外。

RoR中所提供的控制器叫动作控制器(ActionController)。本文将主要讨论动作控制器所提供的几种服务,以及如何使用动作控制器。

什么是动作控制器

在RoR中,动作包(Action Pack)是这个框架的核心。它包括两部分,动作视图和动作控制器。动作包的一个特点是除了Web程序,不能使用在其它类型的程序中。下面让我们看看在我们通过浏览器键入一个URL后,如http://localhost:3000/demo/say/hello,都发生了什么。下面是在RoR中处理动作的步骤:

1. RoR首先装载了位于app/controllers目录中的say_controller.rb文件。这个文件只被装载一次。

2. 然后 RoR建立了类SayController的实例。

3. 一旦SayController类被实例化,RoR就会在app/helpers中查找say_helper.rb文件。如果这个文件存在,它就会被装载,并且这个文件将会和SayController对象混合。这就意味着在SayController对象中可以直接访问SayHelper中的方法。

4. 最后在app/models中查找say.rb文件,如果存在,装载它。

到现在为止,我们已经对应用程序的初始化过程非常清楚了,接下来让我们继续看看动作控制器所提供的服务。下面是RoR所提供的服务列表:

1. URL映射

2. 会话跟踪

3. 过滤和验证

4. 缓冲

Ruby on Rails的控制器纵览(2)

时间:2011-11-09

现在又带来一个问题。这些服务为什么由控制器来提供。当然,答案也很简单,这是因为控制器介于数据和应用程序之间,因此,它可以监视数据的存取,并且可以根据需要对URL进行映射。因此,这些服务理所当然由控制器来提供。下面我们将详细讨论控制器提供的这些服务。

1. URL映射

当我们在浏览器中输入http://localhost:3000/admin/show时,会显示相应的内容。但你也许会有疑问,RoR是如何将URL链接映射成相应的类或方法呢?事实上,这些映射的代码都被写在了config目录中的routers.rb中。下面是这个文件的部分代码。

ActionController::Routing::Routes.drawdo|map|
map.connect '':controller/service.wsdl'', :action => ''wsdl''
map.connect '':controller/:action/:id''
end

动作控制器通过它的映射组件将来自外部请求的URL和内部的应用程序连接了起来。上述代码的第3行就是完成这个功能的。在这行语句中,map.connect的连接字符串是":controller/:action/:id"。请求的URL只有匹配这个字符串才能被接受。对于一个URL请求来说,它可以被RoR分成三部分:

a. 第一部分是模式字符串中的:controller部分。

b. 第二部分是模式字符串中的:action部分。

c. 第三部分是模式字符串中的:id部分。

根据上面所描述的三部分,URL:http://localhost:3000/demo/admin/show/1/将被映射成以下三部分:

:controller : ''admin'',
:action :''show'',
:id :1

根据以上的三部分,RoR将调用admin控制器的show方法,并将参数1传到show方法中。因此,我们可以看出,RoR在其中做了很多本应该由我们做的事件。因此,RoR是一项十分强大技术。

2. 会话跟踪

跨应用跟踪用户是大多数Web应用程序都需要的功能。在RoR中,我们可使用由RoR框架提供cookies或session管理来跟踪用户。但在RoR中的cookies和session管理和其它框架所提供的类似的管理不同的,RoR的cookies和session管理无需显式地调用相应的cookies和session对象就可以做到这一切。下面让我们来看看它的实现代码:

class CookiesController < ApplicationController
def create_cookie
coo

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号