首页 > 解决方案 > 国际化(翻译)数组的rails模型值如何?

问题描述

此部分存在于模型中,我们将其用于表单提交。

GENDER_TYPES = %w[Male Female Other]

标签: ruby-on-railsinternationalizationrubygems

解决方案


我不确定这是否适合您,但在这种情况下我所做的是使用(Rails 枚举)。在您的模型中:

class MyModel < ApplicationRecord
  enum gender: [:male, :female, :other]
end

我的 ApplicationRecord 类:

   class ApplicationRecord < ActiveRecord::Base
     self.abstract_class = true

     def self.enum_t(enum_name, enum_value)
       I18n.t("activerecord.attributes.#{model_name.i18n_key}.#{enum_name.to_s.pluralize}.#{enum_value}")
     end
   end

在我的 en.yml 中:

  en:
    activerecord:
      attributes:
        my_model:
          genders:
            male: Male
            female: Female
            other: Other

在我看来要创建一个选择:

f.select :gender, MyModel.genders.keys.collect { |gender| [MyModel.enum_t(:gender, gender), gender] }

或显示动作:

= MyModel.enum_t(:gender, my_model.gender)

推荐阅读