diff options
author | makoto kuwata <kwa@kuwata-lab.com> | 2007-05-26 04:29:48 +0000 |
---|---|---|
committer | makoto kuwata <kwa@kuwata-lab.com> | 2007-05-26 04:29:48 +0000 |
commit | b3fbe4a57ccba858b898f0d87e2612c803c6829e (patch) | |
tree | 03d81d633a331e99658ceb532ca2a51187ff6ee1 /lib | |
parent | c76e3a0dde6461c8741e64d6ec1d2240314894bb (diff) | |
download | erubis-b3fbe4a57ccba858b898f0d87e2612c803c6829e.tar.gz |
- [bugfix] rails_helper.rb is edited incorrectly
Diffstat (limited to 'lib')
-rw-r--r-- | lib/erubis/helpers/rails_helper.rb | 73 |
1 files changed, 69 insertions, 4 deletions
diff --git a/lib/erubis/helpers/rails_helper.rb b/lib/erubis/helpers/rails_helper.rb index 645b4eb..dacd899 100644 --- a/lib/erubis/helpers/rails_helper.rb +++ b/lib/erubis/helpers/rails_helper.rb @@ -113,15 +113,80 @@ if ActionPack::VERSION::MINOR <= 12 ### Rails 1.1 when :rxml "xml = Builder::XmlMarkup.new(:indent => 2)\n" + "@controller.headers['Content-Type'] ||= 'application/xml'\n" + + template + when :rjs + "@controller.headers['Content-Type'] ||= 'text/javascript'\n" + + "update_page do |page|\n#{template}\nend" + end + else + #body = ERB.new(template, nil, @@erb_trim_mode).src + body = convert_template_into_ruby_code(template) + end + + @@template_args[render_symbol] ||= {} + locals_keys = @@template_args[render_symbol].keys | locals + @@template_args[render_symbol] = locals_keys.inject({}) { |h, k| h[k] = true; h } + + locals_code = "" + locals_keys.each do |key| + locals_code << "#{key} = local_assigns[:#{key}] if local_assigns.has_key?(:#{key})\n" + end + + "def #{render_symbol}(local_assigns)\n#{locals_code}#{body}\nend" + end + + +else ### Rails 1.2 or later + + + # Create source code for given template + def create_template_source(extension, template, render_symbol, locals) + if template_requires_setup?(extension) + body = case extension.to_sym + when :rxml + "controller.response.content_type ||= 'application/xml'\n" + + "xml = Builder::XmlMarkup.new(:indent => 2)\n" + + template + when :rjs + "controller.response.content_type ||= 'text/javascript'\n" + + "update_page do |page|\n#{template}\nend" + end + else + #body = ERB.new(template, nil, @@erb_trim_mode).src + body = convert_template_into_ruby_code(template) + end + + @@template_args[render_symbol] ||= {} + locals_keys = @@template_args[render_symbol].keys | locals + @@template_args[render_symbol] = locals_keys.inject({}) { |h, k| h[k] = true; h } + + locals_code = "" + locals_keys.each do |key| + locals_code << "#{key} = local_assigns[:#{key}]\n" + end + + "def #{render_symbol}(local_assigns)\n#{locals_code}#{body}\nend" + end + + +end ### + + + end + + end + +end + + ## set Erubis as eRuby compiler in Ruby on Rails instead of ERB class ActionView::Base # :nodoc: private def convert_template_into_ruby_code(template) #src = Erubis::Eruby.new(template).src - rails_helper = Erubis::Helpers::RailsHelper - klass = rails_helper.engine_class - properties = rails_helper.init_properties - show_src = rails_helper.show_src + klass = Erubis::Helpers::RailsHelper.engine_class + properties = Erubis::Helpers::RailsHelper.init_properties + show_src = Erubis::Helpers::RailsHelper.show_src src = klass.new(template, properties).src #src.insert(0, '_erbout = ') logger.debug "** Erubis: src==<<'END'\n#{src}END\n" if show_src |