mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Make sure respond_with with :js tries to render a template in all cases
This commit is contained in:
parent
35cdd256c0
commit
9c9ec2172e
4 changed files with 23 additions and 6 deletions
|
@ -30,6 +30,8 @@
|
|||
|
||||
*Rails 3.1.0 (unreleased)*
|
||||
|
||||
* Make sure respond_with with :js tries to render a template in all cases [José Valim]
|
||||
|
||||
* json_escape will now return a SafeBuffer string if it receives SafeBuffer string [tenderlove]
|
||||
|
||||
* Make sure escape_js returns SafeBuffer string if it receives SafeBuffer string [Prem Sichanugrist]
|
||||
|
|
|
@ -162,6 +162,11 @@ module ActionController #:nodoc:
|
|||
navigation_behavior(e)
|
||||
end
|
||||
|
||||
# to_js simply tries to render a template. If no template is found, raises the error.
|
||||
def to_js
|
||||
default_render
|
||||
end
|
||||
|
||||
# All other formats follow the procedure below. First we try to render a
|
||||
# template, if the template is not available, we verify if the resource
|
||||
# responds to :to_format and display it.
|
||||
|
|
|
@ -509,7 +509,7 @@ end
|
|||
class RespondWithController < ActionController::Base
|
||||
respond_to :html, :json
|
||||
respond_to :xml, :except => :using_resource_with_block
|
||||
respond_to :js, :only => [ :using_resource_with_block, :using_resource ]
|
||||
respond_to :js, :only => [ :using_resource_with_block, :using_resource, :using_hash_resource ]
|
||||
|
||||
def using_resource
|
||||
respond_with(resource)
|
||||
|
@ -575,11 +575,6 @@ protected
|
|||
def resource
|
||||
Customer.new("david", request.delete? ? nil : 13)
|
||||
end
|
||||
|
||||
def _render_js(js, options)
|
||||
self.content_type ||= Mime::JS
|
||||
self.response_body = js.respond_to?(:to_js) ? js.to_js : js
|
||||
end
|
||||
end
|
||||
|
||||
class InheritedRespondWithController < RespondWithController
|
||||
|
@ -638,6 +633,20 @@ class RespondWithControllerTest < ActionController::TestCase
|
|||
end
|
||||
end
|
||||
|
||||
def test_using_resource_with_js_simply_tries_to_render_the_template
|
||||
@request.accept = "text/javascript"
|
||||
get :using_resource
|
||||
assert_equal "text/javascript", @response.content_type
|
||||
assert_equal "alert(\"Hi\");", @response.body
|
||||
end
|
||||
|
||||
def test_using_hash_resource_with_js_raises_an_error_if_template_cant_be_found
|
||||
@request.accept = "text/javascript"
|
||||
assert_raise ActionView::MissingTemplate do
|
||||
get :using_hash_resource
|
||||
end
|
||||
end
|
||||
|
||||
def test_using_hash_resource
|
||||
@request.accept = "application/xml"
|
||||
get :using_hash_resource
|
||||
|
|
1
actionpack/test/fixtures/respond_with/using_resource.js.erb
vendored
Normal file
1
actionpack/test/fixtures/respond_with/using_resource.js.erb
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
alert("Hi");
|
Loading…
Reference in a new issue