【问题标题】:No implicit conversion of String into Integer (TypeError)?没有将字符串隐式转换为整数(TypeError)?
【发布时间】:2014-01-14 10:39:13
【问题描述】:

我正在尝试编写一个脚本,该脚本将从使用 XMLRPC 的 Red Hat Satellite/Spacewalk 获取系统 ID。我正在尝试使用系统名称来获取作为第一个值的 ID。

我引用 Red Hat 的 the documentation 来获取以下使用的方法:

#!/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)

感谢任何帮助

【问题讨论】:

    标签: ruby redhat


    【解决方案1】:

    写成

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-20
      相关资源
      最近更新 更多