Create a gist now

Instantly share code, notes, and snippets.

Fixes Rails issue 687 (ActionMailer is html escaping ampersand in urls in plain text messages) for Rails 3.2.1
# fixes https://github.com/rails/rails/issues/687 for Rails 3.2.1.
# put this in an initializer.
module ActionView
class Template
module Handlers
class ERB
def call(template)
if template.source.encoding_aware?
# First, convert to BINARY, so in case the encoding is
# wrong, we can still find an encoding tag
# (<%# encoding %>) inside the String using a regular
# expression
template_source = template.source.dup.force_encoding("BINARY")
erb = template_source.gsub(ENCODING_TAG, '')
encoding = $2
erb.force_encoding valid_encoding(template.source.dup, encoding)
# Always make sure we return a String in the default_internal
erb.encode!
else
erb = template.source.dup
end
self.class.erb_implementation.new(
erb,
:escape => template.identifier !~ /\.html/, # only escape HTML templates
:trim => (self.class.erb_trim_mode == "-")
).src
end
end
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment