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

use*_*647 12 ruby redhat

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

我正在引用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']
Run Code Online (Sandbox Code Playgroud)

getsystemid的输出如下所示:

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

但是当我试着刚刚id得到这个错误时:

no implicit conversion of String into Integer (TypeError)
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏

Aru*_*hit 39

写为

@systemid = @getsystemid[0]['id']
Run Code Online (Sandbox Code Playgroud)

@getsystemid是不是Hash,它是一个ArrayHash.@getsystemid[0]会给你预定的哈希值{"id"=>1000010466, "name"=>"cfme038", "last_checkin"=>#}.现在,您可以使用Hash#[]方法通过使用其键来访问哈希值.