我正在尝试一个带有翻译的activemodel实例。我发现,验证(与其他语言环境一起使用)的唯一方法是通过为模型中定义的每个字段复制错误消息。因此,对于此模型:

require 'active_model'
class User
  include ActiveModel::Validations
  attr_accessor :first_name, :last_name, :email, :phone
  attr_accessor :address, :ssn, :university, :faculty
  attr_accessor :time_left, :gpa

  validates_presence_of :first_name, :last_name, :email, :phone
  validates_presence_of :address, :ssn, :university, :faculty
  validates_presence_of :time_left, :gpa
end


我必须写这个yaml:

en:
  activemodel:
    errors:
      models:
        user:
          attributes:
            phone:
              blank: 'cannot be empty'
            first_name:
              blank: 'cannot be empty'
            last_name:
              blank: 'cannot be empty'
            email:
              blank: 'cannot be empty'
            gpa:
              blank: 'cannot be empty'
            address:
              blank: 'cannot be empty'
            faculty:
              blank: 'cannot be empty'
            university:
              blank: 'cannot be empty'


另外,我似乎必须对每个模型都执行此操作,而不是仅定义活动模型应转换所有模型的通用方法。我试过了:

en:
  activemodel:
    errors:
      models:
        attributes:
           blank: 'cannot be empty'


但这没有用。我显然缺少了一些东西……谢谢。

最佳答案

试试这个:

en:
  errors:
    messages:
      blank: "cannot be empty"

10-06 11:29