aboutsummaryrefslogtreecommitdiffstats
path: root/actionview
diff options
context:
space:
mode:
authorAaron Patterson <aaron.patterson@gmail.com>2019-02-22 11:58:04 -0800
committerAaron Patterson <aaron.patterson@gmail.com>2019-02-22 11:58:04 -0800
commit62cb3ee35c5c0d729c54b057c37b8f6bed4dda7f (patch)
treebf6227cab8ce3e46aad24bb383eb37044625a0b2 /actionview
parent3b6602aa7a01fb415fce07ef32458b131e5762e1 (diff)
downloadrails-62cb3ee35c5c0d729c54b057c37b8f6bed4dda7f.tar.gz
rails-62cb3ee35c5c0d729c54b057c37b8f6bed4dda7f.tar.bz2
rails-62cb3ee35c5c0d729c54b057c37b8f6bed4dda7f.zip
Ensure that rendered templates always have a format
This removes one call to `lookup_context` and also eliminates a conditional in `_render_template`.
Diffstat (limited to 'actionview')
-rw-r--r--actionview/lib/action_view/renderer/abstract_renderer.rb13
-rw-r--r--actionview/lib/action_view/renderer/partial_renderer.rb2
-rw-r--r--actionview/lib/action_view/renderer/template_renderer.rb7
-rw-r--r--actionview/lib/action_view/rendering.rb3
4 files changed, 18 insertions, 7 deletions
diff --git a/actionview/lib/action_view/renderer/abstract_renderer.rb b/actionview/lib/action_view/renderer/abstract_renderer.rb
index 200dc3e10e..f1b4c9b92d 100644
--- a/actionview/lib/action_view/renderer/abstract_renderer.rb
+++ b/actionview/lib/action_view/renderer/abstract_renderer.rb
@@ -28,6 +28,10 @@ module ActionView
end
class RenderedCollection # :nodoc:
+ def self.empty(format)
+ EmptyCollection.new format
+ end
+
attr_reader :rendered_templates
def initialize(rendered_templates, spacer)
@@ -44,11 +48,14 @@ module ActionView
end
class EmptyCollection
- def format; nil; end
+ attr_reader :format
+
+ def initialize(format)
+ @format = format
+ end
+
def body; nil; end
end
-
- EMPTY = EmptyCollection.new
end
class RenderedTemplate # :nodoc:
diff --git a/actionview/lib/action_view/renderer/partial_renderer.rb b/actionview/lib/action_view/renderer/partial_renderer.rb
index 4ae6f635ae..ed8d5cf54e 100644
--- a/actionview/lib/action_view/renderer/partial_renderer.rb
+++ b/actionview/lib/action_view/renderer/partial_renderer.rb
@@ -326,7 +326,7 @@ module ActionView
def render_collection(view, template)
identifier = (template && template.identifier) || @path
instrument(:collection, identifier: identifier, count: @collection.size) do |payload|
- return RenderedCollection::EMPTY if @collection.blank?
+ return RenderedCollection.empty(@lookup_context.formats.first) if @collection.blank?
spacer = if @options.key?(:spacer_template)
spacer_template = find_template(@options[:spacer_template], @locals.keys)
diff --git a/actionview/lib/action_view/renderer/template_renderer.rb b/actionview/lib/action_view/renderer/template_renderer.rb
index c17d6182e8..5bd14af128 100644
--- a/actionview/lib/action_view/renderer/template_renderer.rb
+++ b/actionview/lib/action_view/renderer/template_renderer.rb
@@ -29,7 +29,12 @@ module ActionView
@lookup_context.with_fallbacks.find_file(options[:file], nil, false, keys, @details)
elsif options.key?(:inline)
handler = Template.handler_for_extension(options[:type] || "erb")
- Template.new(options[:inline], "inline template", handler, locals: keys)
+ format = if handler.respond_to?(:default_format)
+ handler.default_format
+ else
+ @lookup_context.formats.first
+ end
+ Template.new(options[:inline], "inline template", handler, locals: keys, format: format)
elsif options.key?(:template)
if options[:template].respond_to?(:render)
options[:template]
diff --git a/actionview/lib/action_view/rendering.rb b/actionview/lib/action_view/rendering.rb
index ac861c44d4..e5e2771323 100644
--- a/actionview/lib/action_view/rendering.rb
+++ b/actionview/lib/action_view/rendering.rb
@@ -118,8 +118,7 @@ module ActionView
renderer.render_to_object(context, options)
end
- rendered_format = rendered_template.format || lookup_context.formats.first
- @rendered_format = Template::Types[rendered_format]
+ @rendered_format = Template::Types[rendered_template.format]
rendered_template.body
end