модуль ActionController::Renderers::ClassMethods
Публичные методы экземпляра
# File actionpack/lib/action_controller/metal/renderers.rb, line 128 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–2018 David Heinemeier Hansson
Licensed under the MIT License.