Rails: Activerecord: как отправить параметры для сообщения I18n внутри errors.add для пользовательской проверки

Я использую Rails 4 с Rails-i18n Gem и хочу заменить мою жестко закодированную строку «300px» заполнителем в моем файле языкового перевода, например %{minimum_resolution} в config/locales/de.yml

  activerecord:
    errors:
      models:
        organisation:
          attributes:
            image:                 
              resolution_too_small:"Image Resolution should be at least %{minimum_resolution}"

Значение в %{minimum_resolution} должно исходить из моей пользовательской проверки в app/models/organisation.rb.

  def validate_minimum_image_dimensions
    if image.present?
      logo = MiniMagick::Image.open(image.path)
      minimum_resolution = 300
      unless logo[:width] > minimum_resolution || logo[:height] > minimum_resolution
        errors.add :image, :minimum_image_size
      end
    else
      return false
    end
  end

Как я могу получить значение из минимального_разрешения в свой файл yaml?


person StandardNerd    schedule 09.10.2015    source источник


Ответы (1)


Попробуйте это и дайте мне знать

  def validate_minimum_image_dimensions
    if image.present?
      logo = MiniMagick::Image.open(image.path)
      minimum_resolution = 300
      unless logo[:width] > minimum_resolution || logo[:height] > minimum_resolution
        errors.add :image, :resolution_too_small, minimum_resolution: minimum_resolution
      end
    else
      return false
    end
  end

Во всяком случае, это синтаксис

errors.add :field_name, :message_key, {optional_param1: value1, optional_param2: value2}

и это должно быть определено так

  activerecord:
    errors:
      models:
        [your_model]:
          attributes:
            [field_name]:                 
              [message_key]: "Image Resolution should be at least %{optional_param1} and %{optional_param2}"
person illusionist    schedule 09.10.2015
comment
Официальные документы по передаче переменных в переводы можно найти здесь - person JBlanco; 14.01.2021