2011-12-11 43 views
4

我试图让我的头脑围绕在rails接收到get/post命令和页面服务之间发生的事件序列。我只是试图自己绘制出序列,并且我意识到自己并没有完全理解哪些脚本甚至是首先运行,所以我想在我的脑海中清除它。当你得到一个页面时,发生什么事件序列

千恩万谢

乔恩

回答

3

该请求进入路由匹配器,该路由匹配器解析URL,解析config/routes.rb,并且如果URL匹配路由,它将查找其名称与URL的控制器部分相匹配的控制器文件(例如http://localhost/categories将寻找一个CategoriesController)

然后,一两件事情发生:

  1. 如果您使用的是Rails的宁静路线,路线匹配应用启发式找出调用其中7个操作:复数最后部分的GET映射到索引;在复数映射为显示后(例如,类别/ 1或类别/某事物或类别/ 1事物)映射到ID-看上去的部分的GET;将一个POST复数的最后一部分映射到创建; PUT到复数映射后更新的ID看部分;将删除到相同的URL映射为销毁;新的和编辑被映射到类别/新的&类别/编辑的GET。
    1. 如果您有自定义操作,则必须在控制器对象中具有相同名称的方法。

所选择的动作被执行并且然后Rails的任一呈现在动作内的渲染调用中指定的模板/文件/动作或它看起来对同一名称的视图文件作为动作和端部与.html.erb(默认情况下)在app/views /目录中。

简单。

+0

确定,所以(大大简化模型,视图的我敢肯定:)和控制文件控制器是第一个叫然后调用模型文件修改数据库和/或调用视图文件这使内容被提供给客户端 –

+0

是的,:)。对不起,我以为你想要的东西比这更详细。 –

+0

不,不,我没有,我只是要检查我的理解:) –

2

Rails会相当多的东西,一个很好的方式得到一个体面的概述是阅读“动作控制器概述”的文件在护栏指南:http://guides.rubyonrails.org/action_controller_overview.html

的基本结构是:

  1. 齿条中间件
  2. 路由
  3. 过滤器
  4. 控制器代码
  5. 渲染
  6. 过滤器

但是轨也做本身很多事情的请求。它会根据您的接受标题自动确定您想要的响应类型,并且/或者如果您手动指定您希望使用类似/blog/1.xml文件的响应类型。 Rails也神奇地创建了一个很好格式化的参数散列,像{[user => {:name =>“foo”}}一样解析params像user [name] = foo这样的参数。 Rails也有内置的异常处理和一些不错的东西来防止跨站点请求伪造等等,所以请查看控制器概述以了解其中的内幕。

+0

完美感谢您的链接 –

相关问题