@@ -630,7 +630,7 @@ def map_member_actions(map, resource)
630630 action_path = resource . options [ :path_names ] [ action ] if resource . options [ :path_names ] . is_a? ( Hash )
631631 action_path ||= Base . resources_path_names [ action ] || action
632632
633- map_resource_routes ( map , resource , action , "#{ resource . member_path } #{ resource . action_separator } #{ action_path } " , "#{ action } _#{ resource . shallow_name_prefix } #{ resource . singular } " , m )
633+ map_resource_routes ( map , resource , action , "#{ resource . member_path } #{ resource . action_separator } #{ action_path } " , "#{ action } _#{ resource . shallow_name_prefix } #{ resource . singular } " , m , { :force_id => true } )
634634 end
635635 end
636636 end
@@ -641,9 +641,9 @@ def map_member_actions(map, resource)
641641 map_resource_routes ( map , resource , :destroy , resource . member_path , route_path )
642642 end
643643
644- def map_resource_routes ( map , resource , action , route_path , route_name = nil , method = nil )
644+ def map_resource_routes ( map , resource , action , route_path , route_name = nil , method = nil , resource_options = { } )
645645 if resource . has_action? ( action )
646- action_options = action_options_for ( action , resource , method )
646+ action_options = action_options_for ( action , resource , method , resource_options )
647647 formatted_route_path = "#{ route_path } .:format"
648648
649649 if route_name && @set . named_routes [ route_name . to_sym ] . nil?
@@ -660,22 +660,18 @@ def add_conditions_for(conditions, method)
660660 end
661661 end
662662
663- def action_options_for ( action , resource , method = nil )
663+ def action_options_for ( action , resource , method = nil , resource_options = { } )
664664 default_options = { :action => action . to_s }
665665 require_id = !resource . kind_of? ( SingletonResource )
666+ force_id = resource_options [ :force_id ] && !resource . kind_of? ( SingletonResource )
666667
667668 case default_options [ :action ]
668669 when "index" , "new" ; default_options . merge ( add_conditions_for ( resource . conditions , method || :get ) ) . merge ( resource . requirements )
669670 when "create" ; default_options . merge ( add_conditions_for ( resource . conditions , method || :post ) ) . merge ( resource . requirements )
670671 when "show" , "edit" ; default_options . merge ( add_conditions_for ( resource . conditions , method || :get ) ) . merge ( resource . requirements ( require_id ) )
671672 when "update" ; default_options . merge ( add_conditions_for ( resource . conditions , method || :put ) ) . merge ( resource . requirements ( require_id ) )
672673 when "destroy" ; default_options . merge ( add_conditions_for ( resource . conditions , method || :delete ) ) . merge ( resource . requirements ( require_id ) )
673- else
674- if method . nil? || resource . member_methods . nil? || resource . member_methods [ method . to_sym ] . nil?
675- default_options . merge ( add_conditions_for ( resource . conditions , method ) ) . merge ( resource . requirements )
676- else
677- resource . member_methods [ method . to_sym ] . include? ( action ) ? default_options . merge ( add_conditions_for ( resource . conditions , method ) ) . merge ( resource . requirements ( require_id ) ) : default_options . merge ( add_conditions_for ( resource . conditions , method ) ) . merge ( resource . requirements )
678- end
674+ else default_options . merge ( add_conditions_for ( resource . conditions , method ) ) . merge ( resource . requirements ( force_id ) )
679675 end
680676 end
681677 end
0 commit comments