mirror of https://github.com/rails/rails
Merge pull request #22854 from jcoyne/missing_template
Default rendering behavior if respond_to collector doesn't have a block.
This commit is contained in:
commit
3bfda09fa0
|
@ -1,3 +1,10 @@
|
|||
* When a `respond_to` collector with a block doesn't have a response, then
|
||||
a `:no_content` response should be rendered. This brings the default
|
||||
rendering behavior introduced by https://github.com/rails/rails/issues/19036
|
||||
to controller methods employing `respond_to`
|
||||
|
||||
*Justin Coyne*
|
||||
|
||||
* Add `ActionController::Parameters#dig` on Ruby 2.3 and greater, which
|
||||
behaves the same as `Hash#dig`.
|
||||
|
||||
|
|
|
@ -198,7 +198,7 @@ module ActionController #:nodoc:
|
|||
_process_format(format)
|
||||
_set_rendered_content_type format
|
||||
response = collector.response
|
||||
response ? response.call : render({})
|
||||
response.call if response
|
||||
else
|
||||
raise ActionController::UnknownFormat
|
||||
end
|
||||
|
|
|
@ -74,6 +74,14 @@ class RespondToController < ActionController::Base
|
|||
end
|
||||
end
|
||||
|
||||
def missing_templates
|
||||
respond_to do |type|
|
||||
# This test requires a block that is empty
|
||||
type.json { }
|
||||
type.xml
|
||||
end
|
||||
end
|
||||
|
||||
def using_defaults_with_type_list
|
||||
respond_to(:html, :xml)
|
||||
end
|
||||
|
@ -624,6 +632,13 @@ class RespondToControllerTest < ActionController::TestCase
|
|||
end
|
||||
end
|
||||
|
||||
def test_missing_templates
|
||||
get :missing_templates, format: :json
|
||||
assert_response :no_content
|
||||
get :missing_templates, format: :xml
|
||||
assert_response :no_content
|
||||
end
|
||||
|
||||
def test_invalid_variant
|
||||
assert_raises(ActionController::UnknownFormat) do
|
||||
get :variant_with_implicit_template_rendering, params: { v: :invalid }
|
||||
|
|
Loading…
Reference in New Issue