Spec-Zone.ru › Ruby on Rails 5.0

модуль ActionController::Renderers::ClassMethods

Публичные методы экземпляра

use_renderer(*args)
Псевдоним для: use_renderers
use_renderers(*args) Показать исходный код
# File actionpack/lib/action_controller/metal/renderers.rb, line 129
def use_renderers(*args)
  renderers = _renderers + args
  self._renderers = renderers.freeze
end

Добавляет, по имени, рендерер или рендереры в _renderers доступные для вызова в действиях контроллера.

Это полезно при рендеринге из ActionController::Metal контроллера или в иных случаях для добавления доступной процедуры рендеринга в конкретный контроллер.

Как 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, и действие завершится ошибкой.

Также используется как: use_renderer

© 2004–2018 David Heinemeier Hansson
Licensed under the MIT License.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API