diff options
author | George Claghorn <george.claghorn@gmail.com> | 2018-04-13 14:43:12 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-04-13 14:43:12 -0400 |
commit | 4f99a2186479d5f77460622f2c0f37708b3ec1bc (patch) | |
tree | 4cf97670f287cfe42f9ec0b5b0f9b457b1bc3019 /actionview | |
parent | 998da3cb3479c224279e165e00cb99556c3b4686 (diff) | |
download | rails-4f99a2186479d5f77460622f2c0f37708b3ec1bc.tar.gz rails-4f99a2186479d5f77460622f2c0f37708b3ec1bc.tar.bz2 rails-4f99a2186479d5f77460622f2c0f37708b3ec1bc.zip |
Fix rendering a differently-formatted partial after caching
Diffstat (limited to 'actionview')
-rw-r--r-- | actionview/lib/action_view/digestor.rb | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/actionview/lib/action_view/digestor.rb b/actionview/lib/action_view/digestor.rb index dbd7a4ee11..45cf48b3e0 100644 --- a/actionview/lib/action_view/digestor.rb +++ b/actionview/lib/action_view/digestor.rb @@ -45,9 +45,8 @@ module ActionView # Create a dependency tree for template named +name+. def tree(name, finder, partial = false, seen = {}) logical_name = name.gsub(%r|/_|, "/") - finder.formats = [finder.rendered_format] if finder.rendered_format - if template = finder.disable_cache { finder.find_all(logical_name, [], partial, []).first } + if template = find_template(finder, logical_name, [], partial, []) finder.rendered_format ||= template.formats.first if node = seen[template.identifier] # handle cycles in the tree @@ -69,6 +68,17 @@ module ActionView seen[name] ||= Missing.new(name, logical_name, nil) end end + + private + def find_template(finder, *args) + finder.disable_cache do + if format = finder.rendered_format + finder.find_all(*args, formats: [format]).first || finder.find_all(*args).first + else + finder.find_all(*args).first + end + end + end end class Node |