Class: ReactRB::Renderer

Inherits:
Object
  • Object
show all
Defined in:
lib/react_rb/renderer.rb

Instance Method Summary collapse

Constructor Details

#initialize(controller:, page:, render:, request:, response:, props:, html_attrs:, title: nil) ⇒ Renderer

Returns a new instance of Renderer.



2
3
4
5
6
7
8
9
10
11
12
# File 'lib/react_rb/renderer.rb', line 2

def initialize(controller:, page:, render:, request:, response:, props:, html_attrs:, title: nil)
  @page = page
  @render = render
  @request = request
  @response = response
  @props = props || {}
  @html_attrs = html_attrs || {}

  controller.instance_variable_set("@pagetitle", title) if title.present?
  controller.instance_variable_set("@__react_page", true)
end

Instance Method Details

#renderObject



14
15
16
17
18
19
20
21
# File 'lib/react_rb/renderer.rb', line 14

def render
  @response.headers["Vary"] = "Accept"
  if @request.headers["X-React-Pack"]
    @render.call json: { props: @props, page: @page }
  else
    @render.call "react/page", locals: { page: @page, props: @props, html_attrs: { **@html_attrs, data: { page: @page } } }
  end
end