Ruby on rails 创建一个灵活、本地化的RubyonRails值列表

Ruby on rails 创建一个灵活、本地化的RubyonRails值列表,ruby-on-rails,select,localization,Ruby On Rails,Select,Localization,我有一个价值观列表(初学者、中级、高级、流利、母语),我想: 充当选择列表的模型 充当模型,将ID转换为HTML表中的值 在多个控制器和视图中使用 按照保留业务规则的顺序(按技能级别排序) 在将来的某个时候本地化 有没有办法实现这个列表来满足我的全部或大部分需求?您可以将数组的定义放在/config/locales/some_language.yml中 例如,您可以在en.yml中包含以下内容 en: experience_levels: 1: Beginner

我有一个价值观列表(初学者、中级、高级、流利、母语),我想:

  • 充当选择列表的模型
  • 充当模型,将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
要在选择框中使用此选项,只需将以下内容放在表单中

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

如果使用form_标记,则需要以下内容:

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


谢谢,谢谢,谢谢。有没有想过如何将本地化的“选择…”选项添加到列表顶部?可能是0:Choose…?您可以将“Choose”元素添加到数组中。但是,在将辅助对象插入select标记之前,最好在辅助对象中预先添加一个单独的值。通过这种方式,您可以对所有选择标记使用它,并且只有一个地方可以更改它。很酷的示例。这对我有用。但如何在视图模板中读取该数组的值呢?例如:如果我已经从db获得了1号,我想获得“初学者”