以MVC的思维方式来理解Ruby on Rails框架的设计结构实用指南
平时做技术实践时,很多问题不是概念不会,而是细节没串起来。拿“以MVC的思维方式来理解Ruby on Rails框架的设计结构”来说,它看着像小点,放到项目里常会牵出环境、配置、兼容性和维护成本。下面按实际采用顺序,把思路、关键写法和容易踩坑的地方讲清楚,便于大家直接对照操作。
在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。
您可能感兴趣的文章:
- Ruby rails 页面跳转(render和redirect_to)
- Rails link_to 详解
- rails常用数据库查询操作、方法浅析
- 学习Ruby你需了解的相关知识(rvm, gem, bundle, rake, rails等)
- Windows下Ruby on Rails开发环境安装设置图文教程
- rails "No route matches" 错误的解决方法
- ruby on rails 代码技巧
- 攻克CakePHP(PHP中的Ruby On Rails框架)图文介绍
- rails 连接mysql的问题解决
- 在阿里云 (aliyun) 服务器上搭建Ruby On Rails环境
- CentOS中设置Ruby on Rails环境
- win7安装ruby on rails开发环境
-
09.05
Experimental提示词怎么写-色彩风格和构图
-
09.05
掌握Excel实用用法,让数据处理变得简单高效讲了什么-主要信息
-
09.05
轻松掌握Excel最新版实用用法-主要信息和内容重点
-
09.05
幼儿园大班故事绘本PPT设计-主要信息和内容重点
-
09.05
提升工作效率的Excel表格应用有哪些-类型差异和选择建议
-
09.05
纳米AI_MCP从配置到调用完整教程
-
-
下载
- |
-
-
下载
- 《行尸走肉第一章》免安装中文汉化硬盘版下载
- 单机|436 MB
- 一款以动作冒险为主题的游戏
-
-
下载
- 《街头霸王X铁拳》免安装中文汉化硬盘版下载
- 单机|111MB
- 一款非常好玩的格斗游戏
-
-
下载
- |
-
-
下载
- 《暗黑破坏神3》免安装繁体中文正式版下载
- 单机|7630 MB
- 一款以角色扮演为主题的游戏
-
-
下载
- 《马克思佩恩3》免安装硬盘版下载
- 单机|27033 MB
- 一款以第三人称射击为主题的游戏