跳至内容 跳至搜索
方法
U

实例公共方法

use_renderer(*args)

别名:use_renderers

use_renderers(*args)

通过名称在控制器操作中添加一个或多个可用的 _renderers

这在从 ActionController::Metal 控制器渲染时很有用,或者是在其他情况下将可用的渲染器 proc 添加到特定控制器。

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

由于 ActionController::Metal 控制器无法渲染,控制器必须包含 AbstractController::RenderingActionController::RenderingActionController::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.renderercontroller._renderers 将为 nil,并且操作将失败。

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