如果输出是欧元,美元,那么如何更改(在Rails中)选项以选择...我想要欧元,美元。
<%= select_tag('user[currency_id]', options_for_select(Currency.get_active.collect{|t| [t.name, t.id]}, @user.try(:currency_id) ), {:class => "bigselect"}) %>
其他人有想法吗?
提前感谢您的帮助。
答案 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] }