如何在视图页面上选择i18n

时间:2014-02-15 09:23:29

标签: ruby-on-rails ruby internationalization rails-i18n

我想在Customer::ROLES数组上应用i18n,

Customer :: ROLES中的值为general, vip, platinum数组

但是当我以这种方式包裹它时我遇到了错误t(Customer::ROLES , scope: 'CUSTOMER')

= f.input :role,label: t("role"),as: :select, |
 :collection => Customer::ROLES, |
 :selected => 1

这是yml文件

CUSTOMER:
    platinum: "白金"
    vip: "vip"

这是错误消息

 NoMethodError in Customers#edit

undefined method `to_a' for #<ActiveSupport::SafeBuffer:0x007fe0e76b6e88>

2 个答案:

答案 0 :(得分:0)

像这样你可以设置I18值

<%= I18n.t 'CUSTOMER.platinum'%>

答案 1 :(得分:0)

我不知道Rails是否支持这一点,但simple_form肯定会支持:

f.input :role, collection: [...]

将尝试翻译给定集合数组中的元素。它将在.yaml文件中查找类似

的内容
simple_form:
  options:
    customer:
      role:
        platinum: ...
        vip: ...

(见https://github.com/plataformatec/simple_form