diff options
author | Sven Fuchs <svenfuchs@artweb-design.de> | 2008-05-13 22:04:20 +0200 |
---|---|---|
committer | Pratik Naik <pratiknaik@gmail.com> | 2008-05-16 17:36:09 +0100 |
commit | 345f030c5b6c0a28ddde56c80a1112b00d345c79 (patch) | |
tree | 710430c54edfa4c1f145fdad150ea184fc2cc0d1 | |
parent | 77f873acf2f1fb4533dfca6b26b965a115ebbc54 (diff) | |
download | rails-345f030c5b6c0a28ddde56c80a1112b00d345c79.tar.gz rails-345f030c5b6c0a28ddde56c80a1112b00d345c79.tar.bz2 rails-345f030c5b6c0a28ddde56c80a1112b00d345c79.zip |
Ensure routing generator works with non-string keys. [#172 state:resolved]
Make sure that (with recent correction to globbed parameter escaping) non-string
values can still be passed route generation helpers for globbed route segments.
For example, foo_path([1, 2, 3]) should still work for a route like map.foo "*globbed"
by implicitely calling to_s on the Fixnums.
Signed-off-by: Pratik Naik <pratiknaik@gmail.com>
-rw-r--r-- | actionpack/lib/action_controller/routing/segments.rb | 2 | ||||
-rw-r--r-- | actionpack/test/controller/routing_test.rb | 7 |
2 files changed, 8 insertions, 1 deletions
diff --git a/actionpack/lib/action_controller/routing/segments.rb b/actionpack/lib/action_controller/routing/segments.rb index b142d18b47..864e068004 100644 --- a/actionpack/lib/action_controller/routing/segments.rb +++ b/actionpack/lib/action_controller/routing/segments.rb @@ -249,7 +249,7 @@ module ActionController end def extract_value - "#{local_name} = hash[:#{key}] && hash[:#{key}].collect { |path_component| URI.escape(path_component, ActionController::Routing::Segment::UNSAFE_PCHAR) }.to_param #{"|| #{default.inspect}" if default}" + "#{local_name} = hash[:#{key}] && hash[:#{key}].collect { |path_component| URI.escape(path_component.to_param, ActionController::Routing::Segment::UNSAFE_PCHAR) }.to_param #{"|| #{default.inspect}" if default}" end def default diff --git a/actionpack/test/controller/routing_test.rb b/actionpack/test/controller/routing_test.rb index b28f7bcdff..5e5503fd52 100644 --- a/actionpack/test/controller/routing_test.rb +++ b/actionpack/test/controller/routing_test.rb @@ -50,6 +50,13 @@ class UriReservedCharactersRoutingTest < Test::Unit::TestCase :additional => ["add#{@segment}itional-1", "add#{@segment}itional-2"] } assert_equal options, @set.recognize_path("/controller/act#{@escaped}ion/var#{@escaped}iable/add#{@escaped}itional-1/add#{@escaped}itional-2") end + + def test_route_generation_allows_passing_non_string_values_to_generated_helper + assert_equal "/controller/action/variable/1/2", @set.generate(:controller => "controller", + :action => "action", + :variable => "variable", + :additional => [1, 2]) + end end class LegacyRouteSetTests < Test::Unit::TestCase |