2015-03-10 1 views
0

Я пытаюсь использовать функцию по модулю %, чтобы взять хэш и ввести значения в соответствующие места внутри строки, но я всегда получаю key{x} not found (KeyError), хотя я могу подтвердить, что ключ есть , Что я делаю не так?ruby ​​ключ не найден с использованием Modulo

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) 

Хеш предоставляется от крошечных с.в. (поражающих сервер SQL) и когда путы используется на нем:

{"environment"=>"prd  ", "locale"=>"uk  ", "totalProducts"=>666, "to 
talOutOfThreshold"=>0, "totalInvalid"=>0, "epochtime"=>1444444444, "thresholdPro 
ductIds"=>"", "invalidProductIds"=>""} 
+0

Что такое строка здесь? –

+0

Извините, строка является вторым выходом/хешем в нижней части моего вопроса –

ответ

0

здесь , хеш-ключи должны быть символами вместо строк, поэтому попробуйте следующее:

to_inject = row.each_with_object({}) { |(key, value), h| h[key.to_sym] = value } 
s = "Invalid: %{totalInvalid} , OutofThreshold: %{totalOutOfThreshold} " 
ext = s % to_inject 

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

+0

Спасибо, если бы я мог +1 здесь, я бы это сделал. –

+0

Если это решает вашу проблему, возможно, стоит сделать ответ правильным, поэтому, если кто-то ищет решение проблемы, подобное вашему, он может найти, что это поможет! Ура! –

+0

Ах спасибо! Новое для stackoverflow. –