Class: Panda::BaseController

Inherits:
Object
  • Object
show all
Defined in:
lib/panda/base_controller.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(request) ⇒ BaseController

Returns a new instance of BaseController.



8
9
10
# File 'lib/panda/base_controller.rb', line 8

def initialize(request)
  @request ||= request
end

Instance Attribute Details

#requestObject (readonly)

Returns the value of attribute request.



6
7
8
# File 'lib/panda/base_controller.rb', line 6

def request
  @request
end

Instance Method Details

#controller_nameObject



40
41
42
# File 'lib/panda/base_controller.rb', line 40

def controller_name
  self.class.to_s.gsub(/Controller$/, "").to_snake_case
end

#dispatch(action) ⇒ Object



44
45
46
47
48
# File 'lib/panda/base_controller.rb', line 44

def dispatch(action)
  send(action)
  render(action) unless get_response
  get_response
end

#get_responseObject



24
25
26
# File 'lib/panda/base_controller.rb', line 24

def get_response
  @response
end

#paramsObject



12
13
14
# File 'lib/panda/base_controller.rb', line 12

def params
  request.params
end

#redirect_to(location, status: 301) ⇒ Object



16
17
18
# File 'lib/panda/base_controller.rb', line 16

def redirect_to(location, status: 301)
  response([], status, "Location" => location)
end

#render(*args) ⇒ Object



28
29
30
# File 'lib/panda/base_controller.rb', line 28

def render(*args)
  response(render_template(*args))
end

#render_template(view_name, locals = {}) ⇒ Object



32
33
34
35
36
37
38
# File 'lib/panda/base_controller.rb', line 32

def render_template(view_name, locals = {})
  layout_template, view_template = layout_view_template(view_name)
  title = view_name.to_s.tr("_", " ")
  layout_template.render(self, title: title) do
    view_template.render(self, locals)
  end
end

#response(body, status = 200, header = {}) ⇒ Object



20
21
22
# File 'lib/panda/base_controller.rb', line 20

def response(body, status = 200, header = {})
  @response = Rack::Response.new(body, status, header)
end