Нет неявного преобразования String в Integer (TypeError)?
Я пытаюсь написать сценарий, который получит идентификатор системы из Red Hat Satellite/Spacewalk, который использует XMLRPC. Я пытаюсь получить идентификатор, который является первым значением при использовании клиента 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']
Результат getystemid выглядит следующим образом:
[{"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)
Любая помощь приветствуется
Ответы
Ответ 1
Напишите как
@systemid = @getsystemid[0]['id']
Ваш @getsystemid
не Hash
, это Array
из Hash
. @getsystemid[0]
предоставит вам предполагаемый хэш {"id"=>1000010466, "name"=>"cfme038", "last_checkin"=>#}
. Теперь вы можете использовать метод Hash#[]
для доступа к значению хэша с помощью его ключей.