Синтаксис хэша-ракета был в Рубине с древних времен:
{ :foo => 1, "bar" => 2 }
Ruby 1.9 (я думаю) ввел новое двоеточие ярлыка только для символов (при сохранении генерала хэша-ракетного для любого типа ключа):
{ foo: 1, "bar" => 2 }
рубин 2,2 (я думаю) введена возможность символизирующей строки в этот синтаксис:
{ "foo": 1, "bar" => 2 }
Все они делают то же самое. То, что вы делаете, - это совершенно грамматический код Ruby - в достаточно новом Ruby.В старых рубины, вам нужно будет использовать старый надежный хэш-ракетную синтаксис:
{ "foo".to_sym => 1, "bar" => 2 }
Теперь, когда вы на самом деле есть строка, вы можете сделать нормальный интерполяции:
{ "f#{'o' * 2}".to_sym => 1, "bar" => 2 }
В вашем случае, вы может написать
{ "#{custom_key}".to_sym => 1 }
Однако все это совершенно не нужно, так как вы можете просто написать просто так, в любой Ruby:
{ custom_key.to_sym => 1 }
Еще лучше, так как вы просто переворачивая все в формате JSON сразу после того, как, вы даже не нужно символизировали клавиши; так что эти два выражения будут иметь одинаковые результаты:
{ custom_key.to_sym => 1 }.to_json
{ custom_key => 1 }.to_json
(Также обратите внимание на то, что вы утверждаете в качестве примеров JSON - вход и выход - это, по сути, не JSON, ни бы .to_json
выход типа В JSON, в отличие от простого текстового объекта JavaScript, ключи должны быть указаны в, и именно так будет производиться to_json
. Однако ваш ввод является рубиновым хэш-символом Ruby.)
Вы код будете работать и это верно. –
Это опечатка? '" # {custome_key} ": 1,' должно быть как '" # {custom_key} ": 1,'. –
Привет @GokulM, спасибо за указание опечатки. Но это не то, что я имел в виду. Когда я запускаю метод, он выдает ошибку «синтаксическая ошибка, неожиданная»: «, ожидая => « # {custome_key} »: 1,' потому что она не должна быть построена так. Вопрос в том, могу ли я выполнить параметризацию имен ключей? :) – araratan