Permalink
Browse files

Allow for respond_to(:html, :js, :xml) (closes #4277) [Caio Chassot]

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@3919 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
  • Loading branch information...
1 parent 7e46571 commit 9840dc84f1727f91228250b874ba06dc97c631f0 @dhh dhh committed Mar 18, 2006
@@ -5,9 +5,11 @@ def self.included(base)
end
module InstanceMethods
- def respond_to(&block)
+ def respond_to(*types, &block)
+ raise ArgumentError, "respond_to takes either types or a block, never bot" unless types.any? ^ block
+ block ||= lambda { |responder| types.each { |type| responder.send(type) } }
responder = Responder.new(block.binding)
- yield responder
+ block.call(responder)
responder.respond
end
end
@@ -40,6 +40,10 @@ def using_defaults
end
end
+ def using_defaults_with_type_list
+ respond_to(:html, :js, :xml)
+ end
+
def using_argument_defaults
person_in_xml = { :name => "David" }.to_xml(:root => "person")
respond_to do |type|
@@ -155,6 +159,20 @@ def test_using_defaults
assert_equal "<p>Hello world!</p>\n", @response.body
end
+ def test_using_defaults_with_type_list
+ @request.env["HTTP_ACCEPT"] = "*/*"
+ get :using_defaults_with_type_list
+ assert_equal 'Hello world!', @response.body
+
+ @request.env["HTTP_ACCEPT"] = "text/javascript"
+ get :using_defaults_with_type_list
+ assert_equal '$("body").visualEffect("highlight");', @response.body
+
+ @request.env["HTTP_ACCEPT"] = "application/xml"
+ get :using_defaults_with_type_list
+ assert_equal "<p>Hello world!</p>\n", @response.body
+ end
+
def test_using_argument_defaults
@request.env["HTTP_ACCEPT"] = "application/xml"
get :using_argument_defaults

0 comments on commit 9840dc8

Please sign in to comment.