class EasyMvc::Controller
Attributes
request[R]
Public Class Methods
action(action_name)
click to toggle source
# File lib/easymvc/controller.rb, line 54 def self.action(action_name) -> (env) { self.new(env).dispatch(action_name) } end
new(env)
click to toggle source
# File lib/easymvc/controller.rb, line 7 def initialize(env) @request ||= Rack::Request.new(env) end
Public Instance Methods
controller_name()
click to toggle source
# File lib/easymvc/controller.rb, line 40 def controller_name self.class.to_s.gsub(/Controller$/, "").downcase end
dispatch(action)
click to toggle source
# File lib/easymvc/controller.rb, line 44 def dispatch(action) content = self.send(action) if get_response get_response else render(action) get_response end end
get_response()
click to toggle source
# File lib/easymvc/controller.rb, line 19 def get_response @response end
params()
click to toggle source
# File lib/easymvc/controller.rb, line 11 def params request.params end
render(*args)
click to toggle source
# File lib/easymvc/controller.rb, line 23 def render(*args) response(render_template(*args)) end
render_template(view_name, locals ={})
click to toggle source
# File lib/easymvc/controller.rb, line 27 def render_template(view_name, locals ={}) filename = File.join("app", "views", controller_name, "#{view_name}.erb") template = File.read(filename) vars = {} instance_variables.each do |var| key = var.to_s.gsub("@", "").to_sym vars[key] = instance_variable_get(var) end Erubis::Eruby.new(template).result(locals.merge(vars)) end
response(body, status = 200, header = {})
click to toggle source
# File lib/easymvc/controller.rb, line 15 def response(body, status = 200, header = {}) @response = Rack::Response.new(body, status, header) end