Class: Panda::BaseController
Instance Attribute Summary collapse
-
#request ⇒ Object
readonly
Returns the value of attribute request.
Instance Method Summary collapse
- #controller_name ⇒ Object
- #dispatch(action) ⇒ Object
- #get_response ⇒ Object
-
#initialize(request) ⇒ BaseController
constructor
A new instance of BaseController.
- #params ⇒ Object
- #redirect_to(location, status: 301) ⇒ Object
- #render(*args) ⇒ Object
- #render_template(view_name, locals = {}) ⇒ Object
- #response(body, status = 200, header = {}) ⇒ Object
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
#request ⇒ Object (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_name ⇒ Object
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_response ⇒ Object
24 25 26 |
# File 'lib/panda/base_controller.rb', line 24 def get_response @response end |
#params ⇒ Object
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 |