mirror of
https://github.com/github/rails.git
synced 2026-01-08 22:27:59 -05:00
fix issue #11605
This commit is contained in:
@@ -1,5 +1,10 @@
|
||||
## unreleased ##
|
||||
|
||||
* Fix to render partial by context(#11605).
|
||||
|
||||
*Kassio Borges*
|
||||
|
||||
|
||||
* Fix `ActionDispatch::Assertions::ResponseAssertions#assert_redirected_to`
|
||||
does not show user-supplied message.
|
||||
|
||||
|
||||
@@ -103,7 +103,7 @@ module ActionView
|
||||
|
||||
# Helpers related to template lookup using the lookup context information.
|
||||
module ViewPaths
|
||||
attr_reader :view_paths, :html_fallback_for_js
|
||||
attr_reader :view_paths
|
||||
|
||||
# Whenever setting view paths, makes a copy so we can manipulate then in
|
||||
# instance objects as we wish.
|
||||
@@ -200,10 +200,7 @@ module ActionView
|
||||
def formats=(values)
|
||||
if values
|
||||
values.concat(default_formats) if values.delete "*/*"
|
||||
if values == [:js]
|
||||
values << :html
|
||||
@html_fallback_for_js = true
|
||||
end
|
||||
values << :html if values == [:js]
|
||||
end
|
||||
super(values)
|
||||
end
|
||||
|
||||
@@ -37,11 +37,5 @@ module ActionView
|
||||
def instrument(name, options={})
|
||||
ActiveSupport::Notifications.instrument("render_#{name}.action_view", options){ yield }
|
||||
end
|
||||
|
||||
def prepend_formats(formats)
|
||||
formats = Array(formats)
|
||||
return if formats.empty? || @lookup_context.html_fallback_for_js
|
||||
@lookup_context.formats = formats | @lookup_context.formats
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -281,8 +281,6 @@ module ActionView
|
||||
@block = block
|
||||
@details = extract_details(options)
|
||||
|
||||
prepend_formats(options[:formats])
|
||||
|
||||
if String === partial
|
||||
@object = options[:object]
|
||||
@path = partial
|
||||
|
||||
@@ -10,10 +10,9 @@ module ActionView
|
||||
template = determine_template(options)
|
||||
context = @lookup_context
|
||||
|
||||
prepend_formats(template.formats)
|
||||
|
||||
unless context.rendered_format
|
||||
context.rendered_format = template.formats.first || formats.last
|
||||
context.formats = template.formats unless template.formats.empty?
|
||||
context.rendered_format = context.formats.first
|
||||
end
|
||||
|
||||
render_template(template, options[:layout], options[:locals])
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
HTML
|
||||
@@ -1 +0,0 @@
|
||||
JSON
|
||||
@@ -1 +0,0 @@
|
||||
<%= render :partial => "test/second_json_partial" %>
|
||||
@@ -1 +0,0 @@
|
||||
Third level
|
||||
@@ -1 +0,0 @@
|
||||
<%= render :partial => "test/first_json_partial", :formats => :json %>
|
||||
@@ -54,16 +54,6 @@ module RenderTestCases
|
||||
assert_equal "Hello world", @view.render(:template => "test/one", :formats => [:html])
|
||||
end
|
||||
|
||||
def test_render_partial_implicitly_use_format_of_the_rendered_partial
|
||||
@view.lookup_context.formats = [:html]
|
||||
assert_equal "Third level", @view.render(:template => "test/html_template")
|
||||
end
|
||||
|
||||
def test_render_partial_use_last_prepended_format_for_partials_with_the_same_names
|
||||
@view.lookup_context.formats = [:html]
|
||||
assert_equal "\nHTML Template, but JSON partial", @view.render(:template => "test/change_priority")
|
||||
end
|
||||
|
||||
def test_render_template_with_a_missing_partial_of_another_format
|
||||
@view.lookup_context.formats = [:html]
|
||||
assert_raise ActionView::Template::Error, "Missing partial /missing with {:locale=>[:en], :formats=>[:json], :handlers=>[:erb, :builder]}" do
|
||||
@@ -71,6 +61,13 @@ module RenderTestCases
|
||||
end
|
||||
end
|
||||
|
||||
def test_render_using_context_format_as_default
|
||||
@view.lookup_context.formats = [:html]
|
||||
assert_equal "partial html", @view.render('test/partial')
|
||||
assert_equal "partial js", @view.render(:partial => 'test/partial', :formats => :js)
|
||||
assert_equal "partial html", @view.render('test/partial')
|
||||
end
|
||||
|
||||
def test_render_file_with_locale
|
||||
assert_equal "<h1>Kein Kommentar</h1>", @view.render(:file => "comments/empty", :locale => [:de])
|
||||
assert_equal "<h1>Kein Kommentar</h1>", @view.render(:file => "comments/empty", :locale => :de)
|
||||
|
||||
Reference in New Issue
Block a user