diff --git a/actionpack/lib/action_controller/routing/segments.rb b/actionpack/lib/action_controller/routing/segments.rb index f6b03ed..8420ef0 100644 --- a/actionpack/lib/action_controller/routing/segments.rb +++ b/actionpack/lib/action_controller/routing/segments.rb @@ -147,13 +147,13 @@ module ActionController def value_check if default # Then we know it won't be nil - "#{value_regexp.inspect} =~ #{local_name}" if regexp + "#{value_regexp.inspect} =~ #{local_name}.to_s" if regexp elsif optional? # If we have a regexp check that the value is not given, or that it matches. # If we have no regexp, return nil since we do not require a condition. - "#{local_name}.nil? || #{value_regexp.inspect} =~ #{local_name}" if regexp + "#{local_name}.nil? || #{value_regexp.inspect} =~ #{local_name}.to_s" if regexp else # Then it must be present, and if we have a regexp, it must match too. - "#{local_name} #{"&& #{value_regexp.inspect} =~ #{local_name}" if regexp}" + "#{local_name} #{"&& #{value_regexp.inspect} =~ #{local_name}.to_s" if regexp}" end end diff --git a/actionpack/test/controller/routing_test.rb b/actionpack/test/controller/routing_test.rb index b8a143c..92cf1af 100644 --- a/actionpack/test/controller/routing_test.rb +++ b/actionpack/test/controller/routing_test.rb @@ -172,6 +172,12 @@ class DynamicSegmentTest < Test::Unit::TestCase a_value = nil assert ! eval(segment.value_check) end + + def test_value_check_with_integer + segment = segment(:regexp => /\d+/) + a_value = 1 + assert eval(segment.value_check) + end def test_optional_value_needs_no_check segment = segment(:optional => true)