aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack
diff options
context:
space:
mode:
authorJesús García Sáez <blaxter@gmail.com>2009-06-23 22:54:32 +0200
committerYehuda Katz + Carl Lerche <ykatz+clerche@engineyard.com>2009-07-02 12:18:48 -0700
commitfc6077d76ecbf20d29e9963afcabfd613d839091 (patch)
treeb602f496778197890eeac8c19c2a39b5bcdd0c45 /actionpack
parent0fbf458b6c7992a1626282727a70636af19450d5 (diff)
downloadrails-fc6077d76ecbf20d29e9963afcabfd613d839091.tar.gz
rails-fc6077d76ecbf20d29e9963afcabfd613d839091.tar.bz2
rails-fc6077d76ecbf20d29e9963afcabfd613d839091.zip
Allow symbols on routes declaration (:controller and :action values) [#2828 state:resolved]
Signed-off-by: Yehuda Katz + Carl Lerche <ykatz+clerche@engineyard.com>
Diffstat (limited to 'actionpack')
-rw-r--r--actionpack/lib/action_controller/routing/route_set.rb1
-rw-r--r--actionpack/test/controller/routing_test.rb10
2 files changed, 11 insertions, 0 deletions
diff --git a/actionpack/lib/action_controller/routing/route_set.rb b/actionpack/lib/action_controller/routing/route_set.rb
index 87b4b0571c..f5a4b1e1db 100644
--- a/actionpack/lib/action_controller/routing/route_set.rb
+++ b/actionpack/lib/action_controller/routing/route_set.rb
@@ -305,6 +305,7 @@ module ActionController
end
def add_route(path, options = {})
+ options.each { |k, v| options[k] = v.to_s if [:controller, :action].include?(k) && v.is_a?(Symbol) }
route = builder.build(path, options)
routes << route
route
diff --git a/actionpack/test/controller/routing_test.rb b/actionpack/test/controller/routing_test.rb
index 16d7df4843..fb83dba395 100644
--- a/actionpack/test/controller/routing_test.rb
+++ b/actionpack/test/controller/routing_test.rb
@@ -2492,6 +2492,16 @@ class RouteSetTest < Test::Unit::TestCase
end
assert_equal({:controller => 'pages', :action => 'show', :name => 'JAMIS'}, set.recognize_path('/page/JAMIS'))
end
+
+ def test_routes_with_symbols
+ set.draw do |map|
+ map.connect 'unnamed', :controller => :pages, :action => :show, :name => :as_symbol
+ map.named 'named', :controller => :pages, :action => :show, :name => :as_symbol
+ end
+ assert_equal({:controller => 'pages', :action => 'show', :name => :as_symbol}, set.recognize_path('/unnamed'))
+ assert_equal({:controller => 'pages', :action => 'show', :name => :as_symbol}, set.recognize_path('/named'))
+ end
+
end
class RouteLoadingTest < Test::Unit::TestCase