module ActionController::Renderers::ClassMethods
Открытые методы экземпляра
# File actionpack/lib/action_controller/metal/renderers.rb, line 142 def use_renderers(*args) renderers = _renderers + args self._renderers = renderers.freeze end
Добавляет по имени один или несколько рендереров в _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, и действие завершится ошибкой.
© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.