跳至内容 跳至搜索

Action View 渲染器

这是渲染的主要入口点。它基本上委托给其他对象,例如 TemplateRenderer 和 PartialRenderer,这些对象实际上渲染了模板。

Renderer 将从 renderrender_body 方法解析选项,并根据选项渲染部分或模板。TemplateRendererPartialRenderer 对象是包装器,它们执行渲染视图所需的所有设置和逻辑,每次调用 render 时都会创建一个新对象。

方法
N
R

属性

[RW] lookup_context

类公有方法

new(lookup_context)

# File actionview/lib/action_view/renderer/renderer.rb, line 18
def initialize(lookup_context)
  @lookup_context = lookup_context
end

实例公有方法

render(context, options)

Action View 和 Action Controller 共享的主要渲染入口点。

# File actionview/lib/action_view/renderer/renderer.rb, line 23
def render(context, options)
  render_to_object(context, options).body
end

render_body(context, options)

渲染,但返回一个有效的 Rack 主体。如果定义了 fibers,我们将返回一个流式主体,该主体逐块渲染模板。

请注意,不支持使用流式渲染部分,因此在这种情况下,我们只需将它们包装在一个数组中。

# File actionview/lib/action_view/renderer/renderer.rb, line 40
def render_body(context, options)
  if options.key?(:partial)
    [render_partial(context, options)]
  else
    StreamingTemplateRenderer.new(@lookup_context).render(context, options)
  end
end