- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章以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,就可以得到如下的一系列路由策略:
1
2
3
4
5
6
7
8
|
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中加上语句 。
1
|
match
'user/create'
=>
'users#new'
,
:via
=>
:get
|
该规则匹配的是浏览器浏览/user/create,Rails会将请求路由到users_controller的new方法上,其他的处理都和/users/new一样。不过要注意的是,Rails会使用第一个匹配上的规则,如果我们把上面的那条route语句改为 。
1
|
match
'users/create'
=>
'users#new'
,
:via
=>
:get
|
,其就不会按我们设想的工作了,其会匹配到到规则 。
1
|
GET /users/1 show page to show user with id 1
|
, 即获取id为created的user.
最后此篇关于以MVC的思维方式来理解Ruby on Rails框架的设计结构的文章就讲到这里了,如果你想了解更多关于以MVC的思维方式来理解Ruby on Rails框架的设计结构的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我是 hadoop mapreduce 框架领域的新手。自己看了很多教程,了解了框架。我已经在伪分布式模式下成功配置了一个 hadoop 设置。我有两个特定任务需要在 Hadoop MapReduce
我在我的Rails应用程序中实现了 sphinx 搜索。 我想模糊搜索。它应该搜索拼写错误,例如,如果输入搜索查询charact * a * ristics,则应该搜索charact * e * ri
我正在和会思考的 sphinx 一起工作 define_index do indexes to indexes created_on has c
我正在尝试在我的 Rails 3 应用程序中设置 Thinking sphinx。我设置了mysql并安装了sphinx没有错误。在我的 gemfile 中有 gem "riddle", "~> 1.
我有一个带有 ui-bootstrap 日期选择器的表单。我想防止日期成为过去。 我将指令的 min-date 设置为 new Date()如下所示。这可以正确地防止在使用弹出窗口时选择过去的日期,但
我对 Sphinx 还很陌生。 尝试查找名称为“bob”且 company_id 为“14”的用户。 Controller: @users = User.search 'bob', :conditio
已关闭。这个问题是 not reproducible or was caused by typos 。目前不接受答案。 这个问题是由拼写错误或无法再重现的问题引起的。虽然类似的问题可能是 on-top
我是一名优秀的程序员,十分优秀!