Ключ 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

Это должно помочь!

Другие вопросы по тегам