diff options
Diffstat (limited to 'actionpack/lib')
-rw-r--r-- | actionpack/lib/action_view/helpers/tag_helper.rb | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/actionpack/lib/action_view/helpers/tag_helper.rb b/actionpack/lib/action_view/helpers/tag_helper.rb index 0e99cfab65..7c6903220a 100644 --- a/actionpack/lib/action_view/helpers/tag_helper.rb +++ b/actionpack/lib/action_view/helpers/tag_helper.rb @@ -48,7 +48,8 @@ module ActionView if block_given? options = content_or_options_with_block if content_or_options_with_block.is_a?(Hash) content = capture(&block) - concat(content_tag_string(name, content, options), block.binding) + content_tag = content_tag_string(name, content, options) + block_is_within_action_view?(block) ? concat(content_tag, block.binding) : content_tag else content = content_or_options_with_block content_tag_string(name, content, options) @@ -98,6 +99,10 @@ module ActionView def fix_double_escape(escaped) escaped.gsub(/&([a-z]+|(#\d+));/i) { "&#{$1};" } end + + def block_is_within_action_view?(block) + eval("defined? _erbout", block.binding) + end end end end |