提交 bec5356f 编写于 作者: J Joshua Peek

Define named routes for other non-GET REST actions

上级 9c7c7104
......@@ -375,6 +375,15 @@ def actions
end
end
def action_type(action)
case action
when :index, :create
:collection
when :show, :update, :destroy
:member
end
end
def name
options[:as] || plural
end
......@@ -391,6 +400,15 @@ def collection_name
plural
end
def name_for_action(action)
case action_type(action)
when :collection
collection_name
when :member
member_name
end
end
def id_segment
":#{singular}_id"
end
......@@ -405,6 +423,13 @@ def initialize(entity, options = {})
super
end
def action_type(action)
case action
when :show, :create, :update, :destroy
:member
end
end
def name
options[:as] || singular
end
......@@ -428,7 +453,7 @@ def resource(*resources, &block)
with_scope_level(:resource, resource) do
yield if block_given?
get :show, :as => resource.member_name if resource.actions.include?(:show)
get :show if resource.actions.include?(:show)
post :create if resource.actions.include?(:create)
put :update if resource.actions.include?(:update)
delete :destroy if resource.actions.include?(:destroy)
......@@ -454,14 +479,14 @@ def resources(*resources, &block)
yield if block_given?
with_scope_level(:collection) do
get :index, :as => resource.collection_name if resource.actions.include?(:index)
get :index if resource.actions.include?(:index)
post :create if resource.actions.include?(:create)
get :new, :as => resource.singular if resource.actions.include?(:new)
end
with_scope_level(:member) do
scope(':id') do
get :show, :as => resource.member_name if resource.actions.include?(:show)
get :show if resource.actions.include?(:show)
put :update if resource.actions.include?(:update)
delete :destroy if resource.actions.include?(:destroy)
get :edit, :as => resource.singular if resource.actions.include?(:edit)
......@@ -525,7 +550,10 @@ def match(*args)
begin
old_path = @scope[:path]
@scope[:path] = "#{@scope[:path]}(.:format)"
return match(options.reverse_merge(:to => action))
return match(options.reverse_merge(
:to => action,
:as => parent_resource.name_for_action(action)
))
ensure
@scope[:path] = old_path
end
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册