无法在错误消息上添加属性值

unable to add attribute value on Error message

我在 user_calendar 模型上有一个自定义验证方法:

class UserCalendar < ActiveRecord::Base
  belongs_to :user

  validate :should_match_company_calendars
  ...

  private
    def should_match_company_calendars
      day_company_calendars = (..query..)
      errors.add(:user, :company_calendar_match) if day_company_calendars.count < 1
    end

这是 en.yml 上的消息:

company_calendar_match: "%{value.full_name} does not work in the selected time lapse"

验证工作正常,但消息显示“%{value.full_name}”而不是 full_name 的实际值。我错过了什么?

您应该调用 I18n.t 方法并传递您想要显示的值,如下所示。

# model
errors.add(:user, I18n.t('... company_calendar_match', full_name: 'set value you want')) if day_company_calendars.count < 1

# en.yml
company_calendar_match: "%{full_name} does not work in the selected time lapse"

更详细的是Rails Guides - i18n api features