rails开发流程
来源:互联网 发布:淘宝卖家查看店铺粉丝 编辑:程序博客网 时间:2024/04/27 08:23
一个rails项目的目录如下图所示,这个目录可以通过”rails new 项目名称”生成
我们主要关注app,config,db这几个文件夹的内容。
app文件夹
app文件夹中含有rails项目的主要内容:
这里包含了MVC设计模式中的三个基本部分,即模型(model文件夹),视图(view文件夹),控制器(controllers文件夹)。
controllers文件夹:
其中每一个rb脚本就是一个控制器,具体用途。。。
view文件夹:
主要是储存网页页面的内容
其中每一个文件夹就是对应一个控制器的视图文件,其中一个文件夹中的内容:
这里的一个嵌入ruby的html文件就是一个网页的页面,可以看到一个控制器可以对应多个页面
Model文件夹:
这里每个rb脚本都对应一个模型文件,可以看到不是每个控制器都对应一个模型文件,只有需要使用数据库和数据库操作的才需要有模型文件。
config文件夹
Config文件夹主要是各种配置文件,我们要关注的主要是routes.rb文件,为了了解其作用我们先来了解下rails的执行流程。
Rails严格遵循MVC模式,因此首先用户在浏览器中向控制器发出请求。控制器的action处理用户请求后,决定将指定的视图页面呈献给用户,而处理结果也在该视图页面中呈现。
例如,在浏览器地址栏中输入了http://localhost:3000/user/show/1, rails处理这个请求的流程如下:
1. 为用户发送一个请求,rails路由器对请求进行解析,
2. 从而决定使用哪个控制器中的哪个action方法来处理用户请求。
URL请求格式如下:http://域名:端口/控制器/控制器中action方法名/请求参数 ,
因此,当用户发送URL请求,http://localhost:3000/user/show/1,rails将会在应用程序中找到,user控制器,调用show这个action方法,并将1这个参数传给该方法。
3. 控制器中的方法调用对应的模型对象的业务逻辑方法。模型对象继承
ActionRecord::Base类,因而具有持久化访问的能力,
例如,当用户发送http://localhost:3000/user/show/1请求时,rails调用user控制器中的show方法来处理该请求。如果该方法增加以下代码:
@user=User.find(params[:id])
这行代码实际上调用了,User模型(类)的find(1)方法,User模型类(继承自
ActionRecord::Base类)与数据库交互,查找user表中id为1的记录,并返回查询到的User实例,并将这个User实例设置成控制器的实例变量。
4. 控制器将处理结果交给视图文件,视图文件负责显示控制器的处理结果。Rails会保证
视图文件能访问到控制器中的实例变量。
如果控制器没有显示的调用render方法将处理结果提交给视图页面,控制器默认把处理结果提交给app\views\控制器名\方法名.html.erb。对于上述请求,控制器user_controller默认将处理结果提交到app\views\user\show.html.erb。然后,在app\views\user\show.html.erb中访问控制器的实例变量@user获取数据库中的数据。
5. 视图文件发送相相应到用户的浏览器,最终结果呈现给用户。
这里的路由就是rails服务器工作流程的第一步。
下面我们从路由开始解析上面的例子
routes.rb的代码如下
resources :people root :to => "welcome#index"get "welcome/say_hello"=>"welcome#say"get "welcome" => "welcome#index"
get"welcome/say_hello"=>"welcome#say"就是一条简单的路由
这行代码的意思就是"welcome/say_hello"这个url对应的是welcome控制器中的say_hello方法。
而上面的resources :people这条语句是一个资源路由,资源路由提供了HTTP响应,控制器action和数据库CRUD操作之间的映射。
这行代码事实上生成了7个不同的路由,这7个路由分别用于新增,查看,修改和删除等操作。每个路由对应的URL,方法,作用如表所示:
http响应
URL
对应的方法
作用
GET
/users
index
以列表形式显示所有数据
GET
/users/new
new
转到创建新数据的HTML页面
POST
/users
create
创建新的数据
GET
/users/1
Show
根据id显示单条数据
GET
/users/1/edit
Edit
根据id编辑数据
PUT
/users/1
Update
根据id更新数据
DELETE
/users/1
destroy
根据id删除数据
然后就到了控制器环节,首先我们了解一下控制器基类,ApplicationController::base
默认情况下,rails应用程序的application类继承自ActionController::base类,而其他的controller类均继承自application类。这样为我们提供了一个统一的接口。
这个例子的people_controller.rb代码如下:
class PeopleController <ApplicationController before_action :set_person, only: [:show, :edit, :update, :destroy] #GET /people #GET /people.json defindex @people = Person.all End………………………..
动作的默认模板放在app/views/控制器名称目录下,对应的是动作名称.html.erb文件,例如上述代码中的index动作会使用模板\app\views\people\index.html.erb,并传递默认的@people参数。
\app\views\people\index.html.erb中的代码如下:
<h1>Listing people</h1> <tbody> <% @people.each do |person| %> <tr> <td><%= person.name %></td> <td><%= person.bio %></td> <td><%= person.birthday %></td> <td><%= link_to 'Show', person %></td> <td><%= link_to 'Edit', edit_person_path(person)%></td> <td><%= link_to 'Destroy', person, method: :delete, data: {confirm: 'Are you sure?' } %></td> </tr> <% end %> </tbody></table> <br> <%= link_to 'New Person',new_person_path %>
这里将由控制器传过来的实例变量@people显示出来,这就是rails工作的整个流程。
- rails开发流程
- Ruby On Rails -- 开发流程
- 深入分析rails数据库连接流程
- Rails 创建关联关系流程
- Heroku部署Rails应用流程
- Radrails 配置 rails 开发
- rails项目开发一
- rails开发环境
- ubuntu rails 开发环境
- 搭建开发rails环境
- Vim 开发Rails
- vim 开发rails 常用命令
- rails开发参考
- 【Rails学习笔记】用户注册的流程
- 【Rails学习笔记】用户注册的流程
- Rails下的Git部署流程
- Rails 应用使用 Capistrano2 部署流程
- Ruby on rails 项目启动流程
- JavaWeb:报错信息The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
- hadoop mapreduce 之wordcount 编译执行
- IIS Express 启用目录浏览
- NYOJ 520 & HDU 2136 Largest prime factor(筛法思想)
- ORA-19815: WARNING: db_recovery_file_dest_size of 2147483648 bytes is 98.85% used
- rails开发流程
- iOS提交发布应用(Xcode5)到App Store 详细解析
- 一维DFT
- 网络基础
- 第十二周 求数的阶乘(递归算法)
- MongoDB 开篇
- JavaWeb——Day20_1
- HDU 4734F(x) 题解 (记忆化DP)
- ubuntu12.04 the system is running in low-graphics mode的解决方案