Ruby - 从符号调用方法



我有一个方法来设置货币的区域设置。

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

最新更新