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

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

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

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

您可以将数组的定义放在/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) %>