跳至内容 跳至搜索

Action Controller 隐式渲染

处理控制器操作的隐式渲染,该操作没有显式地使用 renderrespond_toredirecthead 进行响应。

对于 API 控制器,隐式响应始终为 204 No Content

对于所有其他控制器,我们使用以下启发式方法来决定是渲染模板、为缺少模板引发错误,还是以 204 No Content 进行响应。

首先,如果我们确实找到了模板,则会渲染它。模板查找会考虑操作名称、区域设置、格式、变体、模板处理程序等(有关详细信息,请参见 render)。

其次,如果我们没有找到模板,但控制器操作确实为其他格式、变体等具有模板,那么我们相信您也打算为此响应提供模板,因此我们引发 ActionController::UnknownFormat 并提供解释。

第三,如果我们没有找到模板,并且请求是网页浏览器中的页面加载(技术上来说,是对 HTML 响应的非 XHR GET 请求),而您合理地期望已渲染模板,那么我们引发 ActionController::MissingExactTemplate 并提供解释。

最后,如果我们没有找到模板,并且请求不是浏览器页面加载,那么我们隐式地以 204 No Content 进行响应。