Define named routes for other non-GET REST actions
This commit is contained in:
parent
9c7c7104f6
commit
bec5356f25
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user