以MVC的思维方式来理解Ruby on Rails框架的设计结构

所属分类: 脚本专栏 / ruby专题 阅读数: 1060
收藏 0 赞 0 分享

在rails中,发送一个请求(/users)的处理全过程如下:
1)、浏览器发送请求(/users)
2)、Rails的 routes会把请求路由给users_controller的index方法
3)、users_controller回调用User Model获取所有的user
4)、User Model会从数据库中把所有的user读取出来,
5)、User Model把从数据库读取出来的所有user封装为List返回给user_controller
6)、user_controlle把User Model返回user list赋值给实例变量@users,该变量会传递给index view
7)、index view接收传递过来的@users,并通过内嵌的ruby把view渲染为HTML
8)、user_controller把渲染好的页面返回给浏览器

不同的请求处理过程基本上一样,除了路由策略,即调用不一样的controller,或者controller的不同方法,具体的调用策略由Rails Router决定。

Rails Router
Rails中的针对Resource的路由策略完全遵守REST的设计风格,即URL只是负责定位资源,对资源的操作通过原生的HTTP Method类型来决定,只需要在routes.rb中配置上resources :users,就可以得到如下的一系列路由策略:

HTTP request  URI    Action   Purpose 
GET     /users   index  page to list all users 
GET     /users/1   show    page to show user with id 1 
GET     /users/new  new    page to make a new user 
POST     /users    create   create a new user 
GET     /users/1/edit edit    page to edit user with id 1 
PUT     /users/1   update   update user with id 1 
DELETE   /users/1   destroy  delete user with id 1 

当然,除了REST风格的各种routes, Rails还支持各种定制的routes规则,方法如下:在routes.rb中加上语句

match 'user/create' => 'users#new', :via => :get 

 
该规则匹配的是浏览器浏览/user/create,Rails会将请求路由到users_controller的new方法上,其他的处理都和/users/new一样。不过要注意的是,Rails会使用第一个匹配上的规则,如果我们把上面的那条route语句改为

match 'users/create' => 'users#new', :via => :get 

,其就不会按我们设想的工作了,其会匹配到到规则

GET    /users/1   show    page to show user with id 1


即获取id为created的user。

更多精彩内容其他人还在看

Linux系统上配置Nginx+Ruby on Rails+MySQL超攻略

这篇文章主要介绍了Linux系统上配置Nginx+Ruby on Rails+MySQL超攻略,用到了RVM,此种服务器搭建配置极力推荐!需要的朋友可以参考下
收藏 0 赞 0 分享

在Ruby on Rails中使用Markdown的方法

这篇文章主要介绍了在Ruby on Rails中使用Markdown的方法,不过依赖于pygments.rb这个工具,事先得安装Python,需要的朋友可以参考下
收藏 0 赞 0 分享

在博客中屏蔽垃圾留言的简单方法

这篇文章主要介绍了在博客中屏蔽垃圾留言的简单方法,作者以Ruby on Rails搭建的博客应用为例,需要的朋友可以参考下
收藏 0 赞 0 分享

快速安装Ruby on Rails的简明指南

这篇文章主要介绍了快速安装Ruby on Rails的简明指南,Rails是Ruby上人气绝对最高的web开发框架,需要的朋友可以参考下
收藏 0 赞 0 分享

Ruby版本管理工具RVM的安装和使用教程

这篇文章主要介绍了Ruby版本管理工具RVM的安装和使用教程,本文示例基于类Unix的系统环境,需要的朋友可以参考下
收藏 0 赞 0 分享

使用rbenv来管理Ruby版本的方法

这篇文章主要介绍了使用rbenv来管理Ruby版本的方法,文中示例基于Mac OS系统进行演示,需要的朋友可以参考下
收藏 0 赞 0 分享

浅析Ruby的源代码布局及其编程风格

这篇文章主要介绍了浅析Ruby的源代码布局及其编程风格,意为给大家推荐一种最为普通的Ruby代码编写风格,需要的朋友可以参考下
收藏 0 赞 0 分享

Ruby编程中的语法使用风格推荐

这篇文章主要介绍了Ruby编程中的语法使用风格推荐,好的代码书写风格有助于debug等工作的进行,需要的朋友可以参考下
收藏 0 赞 0 分享

Ruby编程中的命名风格指南

这篇文章主要介绍了Ruby编程中的命名风格指南,包括变量和自定义方法等的常用命名格式,需要的朋友可以参考下
收藏 0 赞 0 分享

编写Ruby代码注释时需要注意的一些问题

这篇文章主要介绍了编写Ruby代码注释时需要注意的一些问题,特别是在团队协作时好的注释能大大增加代码的可读性,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多