创建灵活的,本地化的Ruby-on-Rails值列表

时间:2010-03-08 21:50:54

标签: ruby-on-rails select localization

我有一个值列表(初级,中级,高级,流利,原生),我想:

  • 充当SELECT列表的模型
  • 充当将ID转换为HTML表格中的值的模型
  • 在多个控制器和视图中使用
  • 遵守保留业务规则的顺序(按技能级别排序)
  • 将来某个时候本地化

有没有办法实现这个列表来满足我的全部或大部分需求?

1 个答案:

答案 0 :(得分:9)

您可以将数组的定义放在/config/locales/some_language.yml

中 例如,你可以在en.yml

中拥有以下内容
en:
   experience_levels: 
          1: Beginner 
          2: Intermediate
          3: Advanced 
          4: Fluent
          4: Native

要将键值对转换为帮助程序,以下内容应该有效:

def experience_levels 
    I18n.t(:experience_levels).map { |key, value| [ value, key ] } 
end

要在选择框中使用此功能,您只需将以下内容放入form_for

即可
<%= f.select :experience_levels, experience_levels %>

如果您使用的是form_tag,则需要以下内容:

<%= select_tag :experience_levels, options_for_select(experience_levels) %>