Class: Cosmo::Web::Controllers::Application

Inherits:
Object
  • Object
show all
Includes:
Renderer
Defined in:
lib/cosmo/web/controllers/application.rb

Direct Known Subclasses

Actions, Jobs, Streams

Constant Summary

Constants included from Renderer

Renderer::ASSETS_ROOT, Renderer::VIEWS_ROOT

Instance Method Summary collapse

Methods included from Renderer

#no_content, #not_found, #ok, #redirect_to, #serve, #url_for

Constructor Details

#initialize(request) ⇒ Application

Returns a new instance of Application.



9
10
11
# File 'lib/cosmo/web/controllers/application.rb', line 9

def initialize(request)
  @request = request
end

Instance Method Details

#content_for(name, content) ⇒ Object



13
14
15
16
# File 'lib/cosmo/web/controllers/application.rb', line 13

def content_for(name, content)
  @content_for ||= {}
  @content_for[name] = content
end

#hx_request?Boolean

Returns:

  • (Boolean)


37
38
39
# File 'lib/cosmo/web/controllers/application.rb', line 37

def hx_request?
  @request.get_header("HTTP_HX_REQUEST") == "true"
end

#paramsObject



29
30
31
# File 'lib/cosmo/web/controllers/application.rb', line 29

def params
  @request.params
end

#pathObject



33
34
35
# File 'lib/cosmo/web/controllers/application.rb', line 33

def path
  @request.path
end

#render(template, locals = nil, layout: false) ⇒ Object



18
19
20
21
22
23
24
25
26
27
# File 'lib/cosmo/web/controllers/application.rb', line 18

def render(template, locals = nil, layout: false)
  defaults = { request: @request }
  locals = Hash(locals).merge(defaults)
  view = erb(template, locals)
  return view unless layout

  @content_for ||= {}
  @content_for[:view] = view
  erb("layout", defaults, @content_for)
end