ruby on rails -更改en中的属性名称.Yml文件不工作



我更改了en中的属性名称。ruby on rails项目中的Yml文件。这些按钮工作正常。但是字段属性没有改变。

这是我的模型,

class Enr::AffordableWarmth < ActiveRecord::Base
  self.table_name = "AffordableWarmth"
  self.primary_key = 'Record_No'
  validates_presence_of :No_Bedrooms, :No_Bedspaces, :Max_Annual_Energy_Cost
  validates :No_Bedrooms, uniqueness: { scope: :No_Bedspaces, 
    message: "already exists!" }
  validates_numericality_of :No_Bedrooms, :No_Bedspaces, :Max_Annual_Energy_Cost
end

en。yml文件

en-GB:
  helpers:
    submit:
      enr_rds_dea:
        create: 'Create new user'
        update: 'Update'
      enr_affordable_warmth:
        create: 'Create'
        update: 'Update'
  activerecord:
      models:
        AffordableWarmth:
      attributes:
        AffordableWarmth:
          No_Bedrooms: "Number of Bedrooms"

仍然,在rails控制台和表单中它显示'No bedroom could not be blank'。代码位不能从activerecord中工作。

lib/active_model/errors.rb,我认为关键应该是'enr/affordable_温情'而不是affordable温情,但你可能需要以某种方式指定" enr "命名空间。

如果它不能工作,用bundle show activemodel找到安装的gem源代码,然后在lib/active_model/errors.rb中做一些调试,以找出它期望的i18n键。

更新:

下面是调试方法:

我搜索I18n,它进行翻译,所以我找到了方法generate_message,它生成了整个错误消息,它将翻译的属性名称作为参数(参见:attribute键),这使我找到了方法human_attribute_name,我发现在lib/active_model/translation.rb中。

我加了一行:

puts "human_attribute_name(#{attribute.inspect}, #{options.inspect}): defaults: #{defaults.inspect}"

就在I18n.translate之前,并启动我的控制台。

对于模型Foo::User我得到:

human_attribute_name("account_type", {}): defaults: [:"activerecord.attributes.foo/user.account_type", :"attributes.account_type", "Account type"]

所以这应该对你有用:

  activerecord:
      attributes:
        "enr/affordable_warmth":
          no_bedrooms: "Number of Bedrooms"

相关内容

  • 没有找到相关文章