class TrailsController::Base

Attributes

params[R]
req[R]
res[R]

Public Class Methods

new(req, res, route_params = {}) click to toggle source
# File lib/controller_base.rb, line 12
def initialize(req, res, route_params = {})
  @req = req
  @res = res
  @params = req.params.merge(route_params)
  @already_built_response = false
end

Public Instance Methods

already_built_response?() click to toggle source
# File lib/controller_base.rb, line 19
def already_built_response?
  @already_built_response
end
flash() click to toggle source
# File lib/controller_base.rb, line 23
def flash
  @flash ||= Flash.new(@req)
end
invoke_action(name) click to toggle source
# File lib/controller_base.rb, line 73
def invoke_action(name)
  send(name)
  render(name) unless already_built_response?
end
redirect_to(url) click to toggle source
# File lib/controller_base.rb, line 27
def redirect_to(url)
  raise 'Response already built' if already_built_response?

  res.status = 302
  res['Location'] = url
  session.store_session(res)
  flash.store_flash(res)

  @already_built_response = true
end
render(template_name) click to toggle source
# File lib/controller_base.rb, line 61
def render(template_name)
  app_template = File.read("app/views/layouts/application.html.erb")
  @__template_name = template_name

  result = ERB.new(app_template).result(binding)
  render_content(result, 'text/html')
end
render_content(content, content_type) click to toggle source
# File lib/controller_base.rb, line 38
def render_content(content, content_type)
  raise 'Cannot render twice' if already_built_response?

  res['Content-Type'] = content_type
  res.write(content)
  session.store_session(res)
  flash.store_flash(res)

  @already_built_response = true
end
render_partial(params = {}) click to toggle source
# File lib/controller_base.rb, line 49
def render_partial(params = {})
  defaults = {
    view_dir: self.class.name.underscore[0..-12],
    template: @__template_name
  }
  params = defaults.merge(params)

  file_path = "app/views/#{params[:view_dir]}/#{params[:template]}.html.erb"
  file_contents = File.read(file_path)
  ERB.new(file_contents).result(binding)
end
session() click to toggle source
# File lib/controller_base.rb, line 69
def session
  @session ||= Session.new(@req)
end