如何在选项[Ruby on Rails]选项中将货币缩写(EUR,USD)更改为(欧元,美元)

时间:2013-01-07 15:30:52

标签: ruby-on-rails

如果输出是欧元,美元,那么如何更改(在Rails中)选项以选择...我想要欧元,美元。

<%= select_tag('user[currency_id]', options_for_select(Currency.get_active.collect{|t| [t.name, t.id]}, @user.try(:currency_id) ), {:class => "bigselect"})  %>

其他人有想法吗?

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:5)

你应该翻译 I18n

Currency.get_active.map{ |t| [I18n.t("currencies.names.long.#{t.name}"), t.id] }

locale.yml 中( en.yml 的示例):

# en.yml
currencies:
  names:
    long:
      usd: "US Dollars"
      eur: "Euros"
      #...
    short:
      usd: "$US"
      eur: "€"

或没有翻译系统的替代方案

class Currency < ActiveRecord::Base
  LONG_NAMES = { 
                 'EUR' => 'Euros', 
                 'USD' => 'US Dollars',
                 # ...
               }
  # ...  
end

并像这样使用它:

Currency.get_active.collect{ |t| [Currency.LONG_NAMES[t.name], t.id] }

如果t.name返回的参赛作品不在LONG_NAMES常量中,请显示t.name属性:

Currency.get_active.collect{ |t| [Currency.LONG_NAMES[t.name] || t.name, t.id] }