提交 6ec07e07 编写于 作者: J Joshua Peek

Store application and other context specific helper modules in ActionView::Base#helpers

上级 cd91a8d3
......@@ -1148,7 +1148,7 @@ def render_for_text(text = nil, status = nil, append_response = false) #:nodoc:
def initialize_template_class(response)
response.template = ActionView::Base.new(self.class.view_paths, {}, self)
response.template.extend self.class.master_helper_module
response.template.helpers.send :include, self.class.master_helper_module
response.redirected_to = nil
@performed_render = @performed_redirect = false
end
......
......@@ -208,10 +208,24 @@ def self.process_view_paths(value)
ActionView::PathSet.new(Array(value))
end
attr_reader :helpers
class ProxyModule < Module
def initialize(receiver)
@receiver = receiver
end
def include(*args)
super(*args)
@receiver.extend(*args)
end
end
def initialize(view_paths = [], assigns_for_first_render = {}, controller = nil)#:nodoc:
@assigns = assigns_for_first_render
@assigns_added = nil
@controller = controller
@helpers = ProxyModule.new(self)
self.view_paths = view_paths
end
......
......@@ -588,26 +588,8 @@ def initialize(context, &block) #:nodoc:
private
def include_helpers_from_context
unless generator_methods_module = @context.instance_variable_get(:@__javascript_generator_methods__)
modules = @context.extended_by - ([ActionView::Helpers] + ActionView::Helpers.included_modules)
generator_methods_module = Module.new do
modules.each do |mod|
begin
include mod
rescue Exception => e
# HACK: Probably not a good idea to suppress these warnings
# AFAIK exceptions are only raised in while testing with mocha
# because the module does not like to be included into other
# non TestUnit classes
end
end
include GeneratorMethods
end
@context.instance_variable_set(:@__javascript_generator_methods__, generator_methods_module)
end
extend generator_methods_module
extend @context.helpers if @context.respond_to?(:helpers)
extend GeneratorMethods
end
# JavaScriptGenerator generates blocks of JavaScript code that allow you
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册