ruby - 没有将 String 隐式转换为 Integer (TypeError)?

标签 ruby redhat

我正在尝试编写一个脚本,该脚本将从使用 XMLRPC 的 Red Hat Satellite/Spacewalk 获取系统 ID。我正在尝试获取 ID,这是使用系统名称使用 XMLRPC 客户端时的第一个值。

我引用的是 the documentation以下使用的方法来自 Red Hat:

#!/usr/bin/env ruby
require "xmlrpc/client"


@SATELLITE_URL = "satellite.rdu.salab.redhat.com"
@SATELLITE_API = "/rpc/api"
@SATELLITE_LOGIN = "********"
@SATELLITE_PASSWORD = "*******"

@client = XMLRPC::Client.new(@SATELLITE_URL, @SATELLITE_API)

@key = @client.call("auth.login", @SATELLITE_LOGIN, @SATELLITE_PASSWORD)

@getsystemid = @client.call("system.getId", @key, 'cfme038')

print "#{@getsystemid}"

@systemid = @getsystemid ['id']

getsystemid 的输出如下所示:

[{"id"=>1000010466, "name"=>"cfme038", "last_checkin"=>#<XMLRPC::DateTime:0x007f9581042428 @year=2013, @month=12, @day=26, @hour=14, @min=31, @sec=28>}]

但是当我试图只获取 id 时,我得到了这个错误:

no implicit conversion of String into Integer (TypeError)

感谢任何帮助

最佳答案

写成

@systemid = @getsystemid[0]['id']

您的@getsystemid 不是Hash,它是HashArray@getsystemid[0] 将为您提供预期的哈希 {"id"=>1000010466, "name"=>"cfme038", "last_checkin"=>#}。现在你可以使用 Hash#[]使用其键访问哈希值的方法。

关于ruby - 没有将 String 隐式转换为 Integer (TypeError)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20790499/

相关文章:

ruby - &. 是什么意思? (和号点)在 Ruby 中是什么意思?

python - AWS cli 描述 openshift 集群

c++ - 程序使用 boost 库编译正常,但运行时出错

linux - RHEL 6.x 启动

ruby - 使用 date_select 而不显示日期

mysql - 在sql中计算datediff

ruby-on-rails - 使用 Devise 注销时真实性 token 无效

ruby - 如何通过一组新的给定键更改散列的所有键

linux - 如何在 Redhat Linux 中安装 CLISP

Linux 每个进程的资源限制——一个深奥的 Red Hat 之谜