Report abuse

ActionController::Resources.module_eval do
  private
  def map_collection_actions(map, resource)
    resource.collection_methods.each do |method, actions|
      actions.each do |action|
        action_options = action_options_for(action, resource, method)
        map.named_route("#{resource.name_prefix}#{action}_#{resource.plural}", "#{resource.path}/#{action}", action_options)
        map.named_route("formatted_#{resource.name_prefix}#{action}_#{resource.plural}", "#{resource.path}/#{action}.:format", action_options)
      end
    end
  end

  def map_new_actions(map, resource)
    resource.new_methods.each do |method, actions|
      actions.each do |action|
        action_options = action_options_for(action, resource, method)
        if action == :new
          map.named_route("#{resource.name_prefix}new_#{resource.singular}", resource.new_path, action_options)
          map.named_route("formatted_#{resource.name_prefix}new_#{resource.singular}", "#{resource.new_path}.:format", action_options)
        else
          map.named_route("#{resource.name_prefix}#{action}_new_#{resource.singular}", "#{resource.new_path}/#{action}", action_options)
          map.named_route("formatted_#{resource.name_prefix}#{action}_new_#{resource.singular}", "#{resource.new_path}/#{action}.:format", action_options)
        end
      end
    end
  end

  def map_member_actions(map, resource)
    resource.member_methods.each do |method, actions|
      actions.each do |action|
        action_options = action_options_for(action, resource, method)
        map.named_route("#{resource.name_prefix}#{action}_#{resource.singular}", "#{resource.member_path}/#{action}", action_options)
        map.named_route("formatted_#{resource.name_prefix}#{action}_#{resource.singular}", "#{resource.member_path}/#{action}.:format",action_options)
      end
    end

    show_action_options = action_options_for("show", resource)
    map.named_route("#{resource.name_prefix}#{resource.singular}", resource.member_path, show_action_options)
    map.named_route("formatted_#{resource.name_prefix}#{resource.singular}", "#{resource.member_path}.:format", show_action_options)

    update_action_options = action_options_for("update", resource)
    map.connect(resource.member_path, update_action_options)
    map.connect("#{resource.member_path}.:format", update_action_options)

    destroy_action_options = action_options_for("destroy", resource)
    map.connect(resource.member_path, destroy_action_options)
    map.connect("#{resource.member_path}.:format", destroy_action_options)
  end
end