У меня есть строка:
s = ExternalLibrary::get_string_data # ====> my_string_{var1}___{var2}
Я хочу заменить "var1" и "var2". Это не работает:
s % {var1: "aa", var2: "bb"} # ====> my_string_{var1}___{var2}
Ruby использует %{, а не { для интерполяции из хеша:
%{
{
s.gsub("{", "%{") % { var1: "foo", var2: "bar" } # => "my_string_foo___bar"
Один вариант, если я получу очко:
s = "my_string_{var1}___{var2}" substitute = {var1: "aa", var2: "bb"} s.split(/\{(.*?)\}/).map { |e| substitute[e.to_sym] || e }.join #=> "my_string_aa___bb"