summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authormakoto kuwata <kwa@kuwata-lab.com>2007-05-26 04:29:48 +0000
committermakoto kuwata <kwa@kuwata-lab.com>2007-05-26 04:29:48 +0000
commitb3fbe4a57ccba858b898f0d87e2612c803c6829e (patch)
tree03d81d633a331e99658ceb532ca2a51187ff6ee1 /lib
parentc76e3a0dde6461c8741e64d6ec1d2240314894bb (diff)
downloaderubis-b3fbe4a57ccba858b898f0d87e2612c803c6829e.tar.gz
- [bugfix] rails_helper.rb is edited incorrectly
Diffstat (limited to 'lib')
-rw-r--r--lib/erubis/helpers/rails_helper.rb73
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