module ActionDispatch::Routing::Mapper::Resources

def name_for_action(as, action)

def name_for_action(as, action)
  prefix = prefix_name_for_action(as, action)
  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
  action_name = @scope.action_name(name_prefix, prefix, collection_name, member_name)
  candidate = action_name.select(&:present?).join("_")
  unless candidate.empty?
    # 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 !candidate.match?(/\A[_a-z]/i) || has_named_route?(candidate)
    else
      candidate
    end
  end
end