提交 2297eaed 编写于 作者: J Joshua Peek

"new" and "edit" name routes always need to be prepend to the

named_route [#3561 state:resolved]
上级 61e9f202
...@@ -338,7 +338,9 @@ def resources(*resources, &block) ...@@ -338,7 +338,9 @@ def resources(*resources, &block)
with_scope_level(:collection) do with_scope_level(:collection) do
get "(.:format)", :to => :index, :as => resource.collection_name get "(.:format)", :to => :index, :as => resource.collection_name
post "(.:format)", :to => :create post "(.:format)", :to => :create
get "/new(.:format)", :to => :new, :as => "new_#{resource.singular}" with_exclusive_name_prefix :new do
get "/new(.:format)", :to => :new, :as => resource.singular
end
end end
with_scope_level(:member) do with_scope_level(:member) do
...@@ -346,7 +348,9 @@ def resources(*resources, &block) ...@@ -346,7 +348,9 @@ def resources(*resources, &block)
get "(.:format)", :to => :show, :as => resource.member_name get "(.:format)", :to => :show, :as => resource.member_name
put "(.:format)", :to => :update put "(.:format)", :to => :update
delete "(.:format)", :to => :destroy delete "(.:format)", :to => :destroy
get "/edit(.:format)", :to => :edit, :as => "edit_#{resource.singular}" with_exclusive_name_prefix :edit do
get "/edit(.:format)", :to => :edit, :as => resource.singular
end
end end
end end
end end
...@@ -400,11 +404,8 @@ def match(*args) ...@@ -400,11 +404,8 @@ def match(*args)
end end
if args.first.is_a?(Symbol) if args.first.is_a?(Symbol)
begin with_exclusive_name_prefix(args.first) do
old_name_prefix, @scope[:name_prefix] = @scope[:name_prefix], "#{args.first}_#{@scope[:name_prefix]}"
return match("/#{args.first}(.:format)", options.merge(:to => args.first.to_sym)) return match("/#{args.first}(.:format)", options.merge(:to => args.first.to_sym))
ensure
@scope[:name_prefix] = old_name_prefix
end end
end end
...@@ -430,6 +431,22 @@ def parent_resource ...@@ -430,6 +431,22 @@ def parent_resource
end end
private private
def with_exclusive_name_prefix(prefix)
begin
old_name_prefix = @scope[:name_prefix]
if !old_name_prefix.blank?
@scope[:name_prefix] = "#{prefix}_#{@scope[:name_prefix]}"
else
@scope[:name_prefix] = prefix.to_s
end
yield
ensure
@scope[:name_prefix] = old_name_prefix
end
end
def with_scope_level(kind, resource = parent_resource) def with_scope_level(kind, resource = parent_resource)
old, @scope[:scope_level] = @scope[:scope_level], kind old, @scope[:scope_level] = @scope[:scope_level], kind
old_resource, @scope[:scope_level_resource] = @scope[:scope_level_resource], resource old_resource, @scope[:scope_level_resource] = @scope[:scope_level_resource], resource
......
...@@ -228,9 +228,23 @@ def test_projects_involvements ...@@ -228,9 +228,23 @@ def test_projects_involvements
assert_equal 'involvements#index', @response.body assert_equal 'involvements#index', @response.body
assert_equal '/projects/1/involvements', project_involvements_path(:project_id => '1') assert_equal '/projects/1/involvements', project_involvements_path(:project_id => '1')
get '/projects/1/involvements/new'
assert_equal 'involvements#new', @response.body
assert_equal '/projects/1/involvements/new', new_project_involvement_path(:project_id => '1')
get '/projects/1/involvements/1' get '/projects/1/involvements/1'
assert_equal 'involvements#show', @response.body assert_equal 'involvements#show', @response.body
assert_equal '/projects/1/involvements/1', project_involvement_path(:project_id => '1', :id => '1') assert_equal '/projects/1/involvements/1', project_involvement_path(:project_id => '1', :id => '1')
put '/projects/1/involvements/1'
assert_equal 'involvements#update', @response.body
delete '/projects/1/involvements/1'
assert_equal 'involvements#destroy', @response.body
get '/projects/1/involvements/1/edit'
assert_equal 'involvements#edit', @response.body
assert_equal '/projects/1/involvements/1/edit', edit_project_involvement_path(:project_id => '1', :id => '1')
end end
end end
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册