提交 90dba008 编写于 作者: A Andrew Bloom 提交者: Pratik Naik

Ensure blank path_prefix works as expected [#2122 state:resolved]

Signed-off-by: NPratik Naik <pratiknaik@gmail.com>
上级 1d88a111
...@@ -159,7 +159,8 @@ def build(path, options) ...@@ -159,7 +159,8 @@ def build(path, options)
path = "/#{path}" unless path[0] == ?/ path = "/#{path}" unless path[0] == ?/
path = "#{path}/" unless path[-1] == ?/ path = "#{path}/" unless path[-1] == ?/
path = "/#{options[:path_prefix].to_s.gsub(/^\//,'')}#{path}" if options[:path_prefix] prefix = options[:path_prefix].to_s.gsub(/^\//,'')
path = "/#{prefix}#{path}" unless prefix.blank?
segments = segments_for_route_path(path) segments = segments_for_route_path(path)
defaults, requirements, conditions = divide_route_options(segments, options) defaults, requirements, conditions = divide_route_options(segments, options)
......
...@@ -955,6 +955,13 @@ def test_named_route_with_path_prefix ...@@ -955,6 +955,13 @@ def test_named_route_with_path_prefix
x.send(:page_url)) x.send(:page_url))
end end
def test_named_route_with_blank_path_prefix
rs.add_named_route :page, 'page', :controller => 'content', :action => 'show_page', :path_prefix => ''
x = setup_for_named_route
assert_equal("http://test.host/page",
x.send(:page_url))
end
def test_named_route_with_nested_controller def test_named_route_with_nested_controller
rs.add_named_route :users, 'admin/user', :controller => 'admin/user', :action => 'index' rs.add_named_route :users, 'admin/user', :controller => 'admin/user', :action => 'index'
x = setup_for_named_route x = setup_for_named_route
...@@ -2130,11 +2137,9 @@ def test_namespace_with_path_prefix ...@@ -2130,11 +2137,9 @@ def test_namespace_with_path_prefix
Object.const_set(:Api, Module.new { |m| m.const_set(:ProductsController, Class.new) }) Object.const_set(:Api, Module.new { |m| m.const_set(:ProductsController, Class.new) })
set.draw do |map| set.draw do |map|
map.namespace 'api', :path_prefix => 'prefix' do |api| map.namespace 'api', :path_prefix => 'prefix' do |api|
api.route 'inventory', :controller => "products", :action => 'inventory' api.route 'inventory', :controller => "products", :action => 'inventory'
end end
end end
request.path = "/prefix/inventory" request.path = "/prefix/inventory"
...@@ -2146,6 +2151,24 @@ def test_namespace_with_path_prefix ...@@ -2146,6 +2151,24 @@ def test_namespace_with_path_prefix
Object.send(:remove_const, :Api) Object.send(:remove_const, :Api)
end end
def test_namespace_with_blank_path_prefix
Object.const_set(:Api, Module.new { |m| m.const_set(:ProductsController, Class.new) })
set.draw do |map|
map.namespace 'api', :path_prefix => '' do |api|
api.route 'inventory', :controller => "products", :action => 'inventory'
end
end
request.path = "/inventory"
request.env["REQUEST_METHOD"] = "GET"
assert_nothing_raised { set.recognize(request) }
assert_equal("api/products", request.path_parameters[:controller])
assert_equal("inventory", request.path_parameters[:action])
ensure
Object.send(:remove_const, :Api)
end
def test_generate_finds_best_fit def test_generate_finds_best_fit
set.draw do |map| set.draw do |map|
map.connect "/people", :controller => "people", :action => "index" map.connect "/people", :controller => "people", :action => "index"
...@@ -2210,6 +2233,13 @@ def test_generate_with_path_prefix ...@@ -2210,6 +2233,13 @@ def test_generate_with_path_prefix
assert_equal "/my/foo/bar/7?x=y", set.generate(args) assert_equal "/my/foo/bar/7?x=y", set.generate(args)
end end
def test_generate_with_blank_path_prefix
set.draw { |map| map.connect ':controller/:action/:id', :path_prefix => '' }
args = { :controller => "foo", :action => "bar", :id => "7", :x => "y" }
assert_equal "/foo/bar/7?x=y", set.generate(args)
end
def test_named_routes_are_never_relative_to_modules def test_named_routes_are_never_relative_to_modules
set.draw do |map| set.draw do |map|
map.connect "/connection/manage/:action", :controller => 'connection/manage' map.connect "/connection/manage/:action", :controller => 'connection/manage'
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册