手机
当前位置:查字典教程网 >脚本专栏 >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的简明指南

快速正确的安装 Ruby, Rails 运行环境

Ruby on Rails下的图像处理入门教程

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

Ruby on Rails中Rack中间件的基础学习教程

Ruby On Rails上手笔记(安装使用全过程)

Ruby on Rails网站项目构建简单指南

Ruby on Rails所构建的应用程序基本目录结构总结

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

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

精品推荐
分类导航