0

У меня есть метод пользовательской проверки на 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" 

Validation работает нормально, но message показывает '% {value.full_name}' вместо фактического значения для full_name. Что мне не хватает?

ответ

0

Вы должны вызвать метод 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

+0

Благодаря @shoji! Это сделало это – ntonnelier