module ActionDispatch::Routing::Mapper::Resources

def name_for_action(as, action) #:nodoc:

:nodoc:
def name_for_action(as, action) #:nodoc:
  prefix = prefix_name_for_action(as, action)
  prefix = Mapper.normalize_name(prefix) if prefix
  name_prefix = @scope[:as]
  if parent_resource
    return nil unless as || action
    collection_name = parent_resource.collection_name
    member_name = parent_resource.member_name
  end
  name = case @scope[:scope_level]
  when :nested
    [name_prefix, prefix]
  when :collection
    [prefix, name_prefix, collection_name]
  when :new
    [prefix, :new, name_prefix, member_name]
  when :member
    [prefix, shallow_scoping? ? @scope[:shallow_prefix] : name_prefix, member_name]
  when :root
    [name_prefix, collection_name, prefix]
  else
    [name_prefix, member_name, prefix]
  end
  if candidate = name.select(&:present?).join("_").presence
    # If a name was not explicitly given, we check if it is valid
    # and return nil in case it isn't. Otherwise, we pass the invalid name
    # forward so the underlying router engine treats it and raises an exception.
    if as.nil?
      candidate unless @set.routes.find { |r| r.name == candidate } || candidate !~ /\A[_a-z]/i
    else
      candidate
    end
  end
end