方法
實體公開方法
use_renderers(*args) 連結
將一或多個繪製程式或繪製器新增到控制器動作的 _renderers
中。
當從 ActionController::Metal
控制器繪製,或將可用的繪製器程序新增至特定控制器時,這非常有用。
ActionController::Base
和 ActionController::API
都包含 ActionController::Renderers::All
,讓所有繪製程式皆可以在控制器中使用。請參閱 Renderers::RENDERERS 和 Renderers.add
。
由於 ActionController::Metal
控制器無法繪製,此控制器必須包含 AbstractController::Rendering
、ActionController::Rendering
和 ActionController::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.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