手机
当前位置:查字典教程网 >脚本专栏 >ruby专题 >以MVC的思维方式来理解Ruby on Rails框架的设计结构
以MVC的思维方式来理解Ruby on Rails框架的设计结构
摘要:在rails中,发送一个请求(/users)的处理全过程如下:1)、浏览器发送请求(/users)2)、Rails的routes会把请求路由...

在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。

【以MVC的思维方式来理解Ruby on Rails框架的设计结构】相关文章:

浅谈Ruby on Rails下的rake与数据库数据迁移操作

对Ruby on Rails进行高效的单元测试的教程

Ruby on Rails迁移时的一些注意事项

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

使用Ruby on Rails和PostgreSQL自动生成UUID的教程

Ruby和Ruby on Rails中解析JSON格式数据的实例教程

在Ruby on Rails上使用Redis Store的方法

利用RJB在Ruby on Rails中使用Java代码的教程

深入理解Ruby on Rails中的缓存机制

Ruby on Rails基础之新建项目

精品推荐
分类导航