Class: InertiaRails::Renderer

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

Constant Summary collapse

KEEP_PROP =
:keep
DONT_KEEP_PROP =
:dont_keep

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(component, controller, request, response, render_method, props: nil, view_data: nil, deep_merge: nil, encrypt_history: nil, clear_history: nil) ⇒ Renderer

Returns a new instance of Renderer.



22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/inertia_rails/renderer.rb', line 22

def initialize(component, controller, request, response, render_method, props: nil, view_data: nil, deep_merge: nil, encrypt_history: nil, clear_history: nil)
  @controller = controller
  @configuration = controller.__send__(:inertia_configuration)
  @component = resolve_component(component)
  @request = request
  @response = response
  @render_method = render_method
  @props = props || controller.__send__(:inertia_view_assigns)
  @view_data = view_data || {}
  @deep_merge = !deep_merge.nil? ? deep_merge : configuration.deep_merge_shared_data
  @encrypt_history = !encrypt_history.nil? ? encrypt_history : configuration.encrypt_history
  @clear_history = clear_history || controller.session[:inertia_clear_history] || false
end

Instance Attribute Details

#clear_historyObject (readonly)

Returns the value of attribute clear_history.



12
13
14
# File 'lib/inertia_rails/renderer.rb', line 12

def clear_history
  @clear_history
end

#componentObject (readonly)

Returns the value of attribute component.



12
13
14
# File 'lib/inertia_rails/renderer.rb', line 12

def component
  @component
end

#configurationObject (readonly)

Returns the value of attribute configuration.



12
13
14
# File 'lib/inertia_rails/renderer.rb', line 12

def configuration
  @configuration
end

#controllerObject (readonly)

Returns the value of attribute controller.



12
13
14
# File 'lib/inertia_rails/renderer.rb', line 12

def controller
  @controller
end

#encrypt_historyObject (readonly)

Returns the value of attribute encrypt_history.



12
13
14
# File 'lib/inertia_rails/renderer.rb', line 12

def encrypt_history
  @encrypt_history
end

#propsObject (readonly)

Returns the value of attribute props.



12
13
14
# File 'lib/inertia_rails/renderer.rb', line 12

def props
  @props
end

#view_dataObject (readonly)

Returns the value of attribute view_data.



12
13
14
# File 'lib/inertia_rails/renderer.rb', line 12

def view_data
  @view_data
end

Instance Method Details

#renderObject



36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/inertia_rails/renderer.rb', line 36

def render
  if @response.headers["Vary"].blank?
    @response.headers["Vary"] = 'X-Inertia'
  else
    @response.headers["Vary"] = "#{@response.headers["Vary"]}, X-Inertia"
  end
  if @request.headers['X-Inertia']
    @response.set_header('X-Inertia', 'true')
    @render_method.call json: page, status: @response.status, content_type: Mime[:json]
  else
    return render_ssr if configuration.ssr_enabled rescue nil
    @render_method.call template: 'inertia', layout: layout, locals: view_data.merge(page: page)
  end
end