跳至内容 跳至搜索

Action Controller 隐式渲染

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

对于 API 控制器,隐式响应始终为 204 无内容

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

首先,如果我们确实找到一个模板,它将被渲染。模板查找考虑操作名称、语言环境、格式、变体、模板处理程序等等(有关详细信息,请参阅 render)。

其次,如果我们没有找到模板,但控制器操作确实具有其他格式、变体等的模板,那么我们相信您本意是要为此响应提供一个模板,并且我们将引发 ActionController::UnknownFormat 并提供解释。

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

最后,如果我们没有找到模板,并且请求不是浏览器页面加载,那么我们将隐式使用 204 无内容 进行响应。