aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack
diff options
context:
space:
mode:
authorJosé Valim <jose.valim@gmail.com>2010-08-24 10:09:06 -0300
committerJosé Valim <jose.valim@gmail.com>2010-08-24 10:26:25 -0300
commitb4f304b7b68e0b4fd780cc6d0944edefc362669d (patch)
treed8c394df4931ebd8cf9aff98591bf8efb0c64136 /actionpack
parent2fb0cbec024c5b51451deab7e390e2d4f712cf8f (diff)
downloadrails-b4f304b7b68e0b4fd780cc6d0944edefc362669d.tar.gz
rails-b4f304b7b68e0b4fd780cc6d0944edefc362669d.tar.bz2
rails-b4f304b7b68e0b4fd780cc6d0944edefc362669d.zip
Fix a bug where symbols and strings were not behaving the same in the router. [#5431 state:resolved]
Diffstat (limited to 'actionpack')
-rw-r--r--actionpack/lib/action_dispatch/routing/mapper.rb13
-rw-r--r--actionpack/test/dispatch/routing_test.rb6
2 files changed, 7 insertions, 12 deletions
diff --git a/actionpack/lib/action_dispatch/routing/mapper.rb b/actionpack/lib/action_dispatch/routing/mapper.rb
index 0a6cd63b56..4dc2fc086e 100644
--- a/actionpack/lib/action_dispatch/routing/mapper.rb
+++ b/actionpack/lib/action_dispatch/routing/mapper.rb
@@ -726,22 +726,17 @@ module ActionDispatch
path = options.delete(:path)
action = args.first
- if action.is_a?(Symbol)
+ if action && action.to_s =~ /^[\w_]+$/
path = path_for_action(action, path)
- options[:to] ||= action
- options[:as] = name_for_action(action, options[:as])
+ options[:action] ||= action
+ options[:as] = name_for_action(action, options[:as])
with_exclusive_scope do
return super(path, options)
end
elsif resource_method_scope?
path = path_for_custom_action
- if action =~ /^[a-zA-Z][_a-zA-Z0-9]*$/
- options[:action] ||= action
- options[:as] = name_for_action(action, options[:as])
- else
- options[:as] = name_for_action(options[:as]) if options[:as]
- end
+ options[:as] = name_for_action(options[:as]) if options[:as]
args.push(options)
with_exclusive_scope do
diff --git a/actionpack/test/dispatch/routing_test.rb b/actionpack/test/dispatch/routing_test.rb
index f4a839e097..a84c4d2d18 100644
--- a/actionpack/test/dispatch/routing_test.rb
+++ b/actionpack/test/dispatch/routing_test.rb
@@ -658,7 +658,7 @@ class TestRoutingMapper < ActionDispatch::IntegrationTest
get '/bookmark/remove'
assert_equal 'bookmarks#destroy', @response.body
- assert_equal '/bookmark/remove', bookmark_remove_path
+ assert_equal '/bookmark/remove', remove_bookmark_path
end
end
@@ -1192,7 +1192,7 @@ class TestRoutingMapper < ActionDispatch::IntegrationTest
def test_match_shorthand_inside_namespace
with_test_routes do
- assert_equal '/account/shorthand', account_shorthand_path
+ assert_equal '/account/shorthand', shorthand_account_path
get '/account/shorthand'
assert_equal 'account#shorthand', @response.body
end
@@ -1244,7 +1244,7 @@ class TestRoutingMapper < ActionDispatch::IntegrationTest
def test_normalize_namespaced_matches
with_test_routes do
- assert_equal '/account/description', account_description_path
+ assert_equal '/account/description', description_account_path
get '/account/description'
assert_equal 'account#description', @response.body