mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Made ActionView::Base#first_render a little more private. And added _last_render to track the most recent render. Will fix #609 as a side effect. [#609 state:resolved]
This commit is contained in:
parent
99cc85bc09
commit
e0fef66149
8 changed files with 25 additions and 23 deletions
|
@ -87,11 +87,11 @@ module ActionController
|
|||
#
|
||||
def assert_template(expected = nil, message=nil)
|
||||
clean_backtrace do
|
||||
rendered = expected ? @response.rendered_file(!expected.include?('/')) : @response.rendered_file
|
||||
rendered = @response.rendered_template.to_s
|
||||
msg = build_message(message, "expecting <?> but rendering with <?>", expected, rendered)
|
||||
assert_block(msg) do
|
||||
if expected.nil?
|
||||
!@response.rendered_with_file?
|
||||
@response.rendered_template ? true : false
|
||||
else
|
||||
rendered.match(expected)
|
||||
end
|
||||
|
|
|
@ -205,17 +205,10 @@ module ActionController #:nodoc:
|
|||
p.match(redirect_url) != nil
|
||||
end
|
||||
|
||||
# Returns the template path of the file which was used to
|
||||
# render this response (or nil)
|
||||
def rendered_file(with_controller = false)
|
||||
if template.first_render
|
||||
template.first_render.to_s
|
||||
end
|
||||
end
|
||||
|
||||
# Was this template rendered by a file?
|
||||
def rendered_with_file?
|
||||
!rendered_file.nil?
|
||||
# Returns the template of the file which was used to
|
||||
# render this response (or nil)
|
||||
def rendered_template
|
||||
template._first_render
|
||||
end
|
||||
|
||||
# A shortcut to the flash. Returns an empyt hash if no session flash exists.
|
||||
|
|
|
@ -159,11 +159,11 @@ module ActionView #:nodoc:
|
|||
class Base
|
||||
include ERB::Util
|
||||
|
||||
attr_accessor :base_path, :assigns, :template_extension, :first_render
|
||||
attr_accessor :base_path, :assigns, :template_extension
|
||||
attr_accessor :controller
|
||||
attr_accessor :_first_render, :_last_render
|
||||
|
||||
attr_writer :template_format
|
||||
attr_accessor :current_render_extension
|
||||
|
||||
attr_accessor :output_buffer
|
||||
|
||||
|
@ -313,7 +313,7 @@ module ActionView #:nodoc:
|
|||
template
|
||||
elsif template = self.view_paths[template_file_name]
|
||||
template
|
||||
elsif first_render && template = self.view_paths["#{template_file_name}.#{first_render.extension}"]
|
||||
elsif _first_render && template = self.view_paths["#{template_file_name}.#{_first_render.extension}"]
|
||||
template
|
||||
elsif template_format == :js && template = self.view_paths["#{template_file_name}.html"]
|
||||
@template_format = :html
|
||||
|
|
|
@ -32,8 +32,7 @@ module ActionView
|
|||
# <i>Topics listed alphabetically</i>
|
||||
# <% end %>
|
||||
def cache(name = {}, options = nil, &block)
|
||||
handler = Template.handler_class_for_extension(current_render_extension.to_sym)
|
||||
handler.new(@controller).cache_fragment(block, name, options)
|
||||
_last_render.handler.new(@controller).cache_fragment(block, name, options)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -18,9 +18,9 @@ module ActionView
|
|||
end
|
||||
|
||||
def render(view, local_assigns = {})
|
||||
view.first_render ||= self
|
||||
view._first_render ||= self
|
||||
view._last_render = self
|
||||
view.send(:evaluate_assigns)
|
||||
view.current_render_extension = extension
|
||||
compile(local_assigns) if handler.compilable?
|
||||
handler.new(view).render(self, local_assigns)
|
||||
end
|
||||
|
|
|
@ -328,11 +328,11 @@ class ActionPackAssertionsControllerTest < Test::Unit::TestCase
|
|||
# check if we were rendered by a file-based template?
|
||||
def test_rendered_action
|
||||
process :nothing
|
||||
assert !@response.rendered_with_file?
|
||||
assert_nil @response.rendered_template
|
||||
|
||||
process :hello_world
|
||||
assert @response.rendered_with_file?
|
||||
assert 'hello_world', @response.rendered_file
|
||||
assert @response.rendered_template
|
||||
assert 'hello_world', @response.rendered_template.to_s
|
||||
end
|
||||
|
||||
# check the redirection location
|
||||
|
|
|
@ -664,6 +664,14 @@ CACHED
|
|||
assert_match "Fragment caching in a partial", @store.read('views/test.host/functional_caching/html_fragment_cached_with_partial')
|
||||
end
|
||||
|
||||
def test_render_inline_before_fragment_caching
|
||||
get :inline_fragment_cached
|
||||
assert_response :success
|
||||
assert_match /Some inline content/, @response.body
|
||||
assert_match /Some cached content/, @response.body
|
||||
assert_match "Some cached content", @store.read('views/test.host/functional_caching/inline_fragment_cached')
|
||||
end
|
||||
|
||||
def test_fragment_caching_in_rjs_partials
|
||||
xhr :get, :js_fragment_cached_with_partial
|
||||
assert_response :success
|
||||
|
|
2
actionpack/test/fixtures/functional_caching/inline_fragment_cached.html.erb
vendored
Normal file
2
actionpack/test/fixtures/functional_caching/inline_fragment_cached.html.erb
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
<%= render :inline => 'Some inline content' %>
|
||||
<% cache do %>Some cached content<% end %>
|
Loading…
Reference in a new issue