Ключ ruby не найден с помощью Modulo
Я пытаюсь использовать функцию строки по модулю %
взять хеш и вставить его значения в соответствующие места внутри строки, но я всегда получаю key{x} not found (KeyError)
хотя я могу подтвердить, что ключ есть. Что я делаю неправильно?
s = "Invalid: %{totalInvalid} , OutofThreshold: %{totalOutOfThreshold} "
puts row.fetch ('totalInvalid') #<-Just checking to make sure the key is in there
ext = s % row
Я получаю этот вывод:
0 #<- Key does seem to be in there, returns correct value
in `%': key{totalInvalid} not found (KeyError)
Хеш предоставляется от крошечных tds (при обращении к SQL-серверу) и когда на него используется put:
{"environment"=>"prd ", "locale"=>"uk ", "totalProducts"=>666, "to
talOutOfThreshold"=>0, "totalInvalid"=>0, "epochtime"=>1444444444, "thresholdPro
ductIds"=>"", "invalidProductIds"=>""}
1 ответ
Решение
Здесь хеш-ключи должны быть символами, а не строками, поэтому попробуйте следующее:
to_inject = row.each_with_object({}) { |(key, value), h| h[key.to_sym] = value }
s = "Invalid: %{totalInvalid} , OutofThreshold: %{totalOutOfThreshold} "
ext = s % to_inject
Это должно помочь!