跳至内容 跳至搜索
方法
U

实例公共方法

use_renderer(*args)

别名:use_renderers

use_renderers(*args)

按名称向控制器操作中可调用的 _renderers 添加一个或多个渲染器。

当从 ActionController::Metal 控制器渲染时,或向特定控制器添加可用的渲染器过程时,此方法非常有用。

ActionController::BaseActionController::API 都包含 ActionController::Renderers::All,使所有渲染器在控制器中可用。请参阅 Renderers::RENDERERS 和 Renderers.add

由于 ActionController::Metal 控制器无法渲染,因此控制器必须包含 AbstractController::RenderingActionController::RenderingActionController::Renderers,并至少有一个渲染器。

您可以通过向 use_renderers 传递渲染器名称或名称来指定要包含哪些渲染器,而不是包含 ActionController::Renderers::All 并包含所有渲染器。例如,仅包含 :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.renderercontroller._renderers 将为 nil,并且操作将失败。

别名:use_renderer
# File actionpack/lib/action_controller/metal/renderers.rb, line 128
def use_renderers(*args)
  renderers = _renderers + args
  self._renderers = renderers.freeze
end