Class: Grimm::BaseController
Instance Attribute Summary collapse
-
#request ⇒ Object
readonly
Returns the value of attribute request.
-
#response(body, status = 200, header = {}) ⇒ Object
readonly
Returns the value of attribute response.
Class Method Summary collapse
Instance Method Summary collapse
- #controller_name ⇒ Object
- #dispatch(action) ⇒ Object
- #get_response ⇒ Object
- #get_vars ⇒ Object
-
#initialize(request) ⇒ BaseController
constructor
A new instance of BaseController.
- #params ⇒ Object
- #redirect_to(url) ⇒ Object
- #render(*args) ⇒ Object
- #render_template(view_name, locals = {}) ⇒ Object
Constructor Details
#initialize(request) ⇒ BaseController
Returns a new instance of BaseController.
7 8 9 |
# File 'lib/grimm/controller.rb', line 7 def initialize(request) @request = request end |
Instance Attribute Details
#request ⇒ Object (readonly)
Returns the value of attribute request.
5 6 7 |
# File 'lib/grimm/controller.rb', line 5 def request @request end |
#response(body, status = 200, header = {}) ⇒ Object (readonly)
Returns the value of attribute response.
5 6 7 |
# File 'lib/grimm/controller.rb', line 5 def response @response end |
Class Method Details
.action(request, action_name) ⇒ Object
63 64 65 |
# File 'lib/grimm/controller.rb', line 63 def self.action(request, action_name) new(request).dispatch(action_name) end |
Instance Method Details
#controller_name ⇒ Object
49 50 51 |
# File 'lib/grimm/controller.rb', line 49 def controller_name self.class.to_s.gsub(/Controller$/, "").snake_case end |
#dispatch(action) ⇒ Object
57 58 59 60 61 |
# File 'lib/grimm/controller.rb', line 57 def dispatch(action) send(action) render(action) unless get_response get_response end |
#get_response ⇒ Object
45 46 47 |
# File 'lib/grimm/controller.rb', line 45 def get_response @response end |
#get_vars ⇒ Object
36 37 38 39 40 41 42 43 |
# File 'lib/grimm/controller.rb', line 36 def get_vars vars = {} instance_variables.each do |var| key = var.to_s.delete("@").to_sym vars[key] = instance_variable_get(var) end vars end |
#params ⇒ Object
11 12 13 |
# File 'lib/grimm/controller.rb', line 11 def params request.params end |
#redirect_to(url) ⇒ Object
53 54 55 |
# File 'lib/grimm/controller.rb', line 53 def redirect_to(url) @response = Rack::Response.new({}, 302, "location" => url) end |
#render(*args) ⇒ Object
15 16 17 |
# File 'lib/grimm/controller.rb', line 15 def render(*args) response(render_template(*args)) end |
#render_template(view_name, locals = {}) ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/grimm/controller.rb', line 23 def render_template(view_name, locals = {}) template = Tilt::ERBTemplate.new(File.join($:.first, "app", "views", "layouts", "application.html.erb")) title = view_name.to_s.tr("_", " ").capitalize view = "#{view_name}.html.erb" view_template = Tilt::ERBTemplate.new(File.join($:.first, "app", "views", controller_name, view)) template.render(self, title: title) do view_template.render(self, locals.merge!(get_vars)) end end |