跳至内容 跳至搜索

Action View Renderer

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

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

方法
N
R

Attributes

[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 body。如果定义了 fibers,我们将返回一个分块渲染模板的流式 body。

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

# 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