diff options
Diffstat (limited to 'actionpack')
| -rw-r--r-- | actionpack/lib/action_dispatch/journey/visitors.rb | 5 | ||||
| -rw-r--r-- | actionpack/test/dispatch/routing_test.rb | 13 | 
2 files changed, 15 insertions, 3 deletions
diff --git a/actionpack/lib/action_dispatch/journey/visitors.rb b/actionpack/lib/action_dispatch/journey/visitors.rb index 1fea8344e7..a5b4679fae 100644 --- a/actionpack/lib/action_dispatch/journey/visitors.rb +++ b/actionpack/lib/action_dispatch/journey/visitors.rb @@ -110,18 +110,17 @@ module ActionDispatch            def visit_CAT(node, optional)              left = visit(node.left, optional)              right = visit(node.right, optional) +              if optional && !(right && left)                ""              else -              left +  right +              [left, right].join              end            end            def visit_SYMBOL(node)              if value = options[node.to_sym]                Router::Utils.escape_path(value) -            else -              nil              end            end        end diff --git a/actionpack/test/dispatch/routing_test.rb b/actionpack/test/dispatch/routing_test.rb index e4c3ddd3f9..3e9e90a950 100644 --- a/actionpack/test/dispatch/routing_test.rb +++ b/actionpack/test/dispatch/routing_test.rb @@ -1102,6 +1102,19 @@ class TestRoutingMapper < ActionDispatch::IntegrationTest      assert_equal 'projects#index', @response.body    end +  def test_scoped_root_as_name +    draw do +      scope '(:locale)', :locale => /en|pl/ do +        root :to => 'projects#index', :as => 'projects' +      end +    end + +    assert_equal '/en', projects_path(:locale => 'en') +    assert_equal '/', projects_path +    get '/en' +    assert_equal 'projects#index', @response.body +  end +    def test_scope_with_format_option      draw do        get "direct/index", as: :no_format_direct, format: false  | 
