class Grimm::BaseController

Attributes

request[R]
response[R]

Public Class Methods

action(request, action_name) click to toggle source
# File lib/grimm/controller.rb, line 63
def self.action(request, action_name)
  new(request).dispatch(action_name)
end
new(request) click to toggle source
# File lib/grimm/controller.rb, line 7
def initialize(request)
  @request = request
end

Public Instance Methods

controller_name() click to toggle source
# File lib/grimm/controller.rb, line 49
def controller_name
  self.class.to_s.gsub(/Controller$/, "").snake_case
end
dispatch(action) click to toggle source
# File lib/grimm/controller.rb, line 57
def dispatch(action)
  send(action)
  render(action) unless get_response
  get_response
end
get_response() click to toggle source
# File lib/grimm/controller.rb, line 45
def get_response
  @response
end
get_vars() click to toggle source
# 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() click to toggle source
# File lib/grimm/controller.rb, line 11
def params
  request.params
end
redirect_to(url) click to toggle source
# File lib/grimm/controller.rb, line 53
def redirect_to(url)
  @response = Rack::Response.new({}, 302, "location" => url)
end
render(*args) click to toggle source
# File lib/grimm/controller.rb, line 15
def render(*args)
  response(render_template(*args))
end
render_template(view_name, locals = {}) click to toggle source
# 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