rails--rails/actionpack/lib/action_view/renderable.rb

39 lines
912 B
Ruby
Raw Normal View History

module ActionView
2008-07-05 17:05:50 +00:00
module Renderable
# TODO: Local assigns should not be tied to template instance
attr_accessor :locals
# TODO: These readers should be private
attr_reader :filename, :source, :handler
def render
prepare!
@handler.render(self, @locals)
end
def method
['_run', @extension, @method_segment, local_assigns_keys].compact.join('_').to_sym
end
private
def prepare!
unless @prepared
@view.send(:evaluate_assigns)
@view.current_render_extension = @extension
if @handler.compilable?
@handler.compile_template(self) # compile the given template, if necessary
end
@prepared = true
end
end
def local_assigns_keys
if @locals && @locals.any?
"locals_#{@locals.keys.map { |k| k.to_s }.sort.join('_')}"
end
end
end
end