方法
实例公共方法
use_renderers(*args) 链接
通过名称在控制器操作中添加一个或多个可用的 _renderers
。
这在从 ActionController::Metal
控制器渲染时很有用,或者是在其他情况下将可用的渲染器 proc 添加到特定控制器。
ActionController::Base
和 ActionController::API
都包含 ActionController::Renderers::All
,使所有渲染器在控制器中可用。参见 Renderers::RENDERERS 和 Renderers.add
。
由于 ActionController::Metal
控制器无法渲染,控制器必须包含 AbstractController::Rendering
、ActionController::Rendering
和 ActionController::Renderers
,并且至少要有一个渲染器。
与其包含 ActionController::Renderers::All
并包含所有渲染器,你可以通过将渲染器名称传递给 use_renderers
来指定要包含的渲染器。例如,仅包含 :json
渲染器 (_render_with_renderer_json
) 的控制器可能如下所示
class MetalRenderingController < ActionController::Metal
include AbstractController::Rendering
include ActionController::Rendering
include ActionController::Renderers
use_renderers :json
def show
render json: record
end
end
你必须指定 use_renderer
,否则 controller.renderer
和 controller._renderers
将为 nil
,并且操作将失败。
也作为别名:use_renderer
来源:显示 | 在 GitHub 上
# File actionpack/lib/action_controller/metal/renderers.rb, line 127 def use_renderers(*args) renderers = _renderers + args self._renderers = renderers.freeze end