Class Erubis::Helper::CachedRailsTemplate
In: erubis/helper/rails.rb
Parent: RailsTemplate

Methods

Public Instance methods

[Source]

# File erubis/helper/rails.rb, line 118
      def render(template, assigns)
        ## template path without suffix
        ## (how to get template path name with suffix? I can't find...)
        c = @view.controller
        template_basename = c.template_root + "/" + c.controller_name + "/" + c.action_name

        ## cache template
        proc_obj = @@cache_table[template_basename]
        unless proc_obj
          code = convert(template)
          proc_obj = eval("proc do #{code} end")
          @@cache_table[template_basename] = proc_obj
        end

        ## use @view as context object
        @view.__send__(:evaluate_assigns)
        #or @view.instance_eval("evaluate_assigns()")
        context = @view

        ## evaluate ruby code with context object
        if assigns && !assigns.empty?
          return _evaluate_proc(proc_obj, context, assigns)
        else
          return context.instance_eval(&proc_obj)
        end
      end

Protected Instance methods

[Source]

# File erubis/helper/rails.rb, line 149
      def _evaluate_proc(_proc_obj, _context, _localvars)
        eval(_localvar_code(_localvars))
        _context.instance_eval(&_proc_obj)
      end

[Validate]