跳到內容 跳到搜尋

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 主體。如果定義了纖維,我們會傳回一個串流主體,將範本逐一渲染。

請注意,不支援使用串流渲染部分,因此在這種情況下,我們只是將其包裝在陣列中。

# 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