Rails 请求处理全解析
在 Rails 应用中,当接收到一个请求时,Action Dispatch 会将其路由到应用中合适的代码处。接下来,我们将深入探讨这些代码内部的工作机制。
1. 动作方法
当控制器对象处理请求时,它会查找与传入动作同名的公共实例方法。具体流程如下:
1. 找到匹配方法 :若找到,就调用该方法。
2. 未找到但实现了 method_missing() :若未找到且控制器实现了 method_missing() 方法,则调用此方法,将动作名称作为第一个参数,空参数列表作为第二个参数传入。
3. 无可用方法 :若没有可调用的方法,控制器会查找以当前控制器和动作命名的模板。若找到,直接渲染该模板;若都不满足,会生成 AbstractController::ActionNotFound 错误。
2. 控制器环境
控制器为动作(以及它们调用的视图)设置环境,许多方法可直接访问 URL 或请求中的信息。以下是一些重要的环境属性:
| 属性 | 描述 |
| ---- | ---- |
| action_name | 当前正在处理的动作名称 |
| cookies | 与请求关联的 cookie,设置其值可在响应发送时将 cookie 存储在浏览器中,Rails 的会话支持基于 cookie |
| headers
超级会员免费看
订阅专栏 解锁全文
31

被折叠的 条评论
为什么被折叠?



