我有一个方法来设置货币的区域设置。
def local_number_to_currency(u)
number_to_currency u,
separator: ".",
delimiter: ",",
precision: 0,
locale: :fr,
raise: true
end
我想:fr
一个变量,以便根据基于称为 Deal 的模态"国家/地区"属性的属性的变量对其进行设置
def extract_locale_from_country(country)
COUNTRY_TO_YML_LOCALE_CODE[country] || DefaultLocale
end
def local_number_to_currency(u)
number_to_currency u,
separator: ".",
delimiter: ",",
precision: 0,
locale: :#{extract_locale_from_country(deal.country)},
raise: true
end
当然,线路locale: :#{extract_locale_from_country(deal.country)}
不起作用。我不知道如何在 ruby 中用 :{call amethod here}
替换:fr
如何实现?
你应该显式地将字符串转换为符号
extract_locale_from_country(deal.country).to_sym
您可以使用 -methode 直接将字符串转换为符号to_sym
。
...
locale: :extract_locale_from_country(deal.country).to_sym,
...
但是您应该小心将用户输入转换为符号,因为"旧"红宝石版本 (<2.2) 没有 gc 符号。
Ruby 2.2 中的符号 GC