У меня есть объект формы (rails 3), и я пытаюсь использовать config/locales/en.yml
для сообщений об ошибках.Rails: объект формы не находит I18n on activemodel (проблема с именами)
Моя форма объекта выглядит следующим образом:
class Users::PasswordAndLoginUpdatingForm
include Virtus.model
extend ActiveModel::Naming
include ActiveModel::Conversion
include ActiveModel::Validations
attribute :requested_email_address, String
validates :requested_email_address, allow_blank: true, format: { with: User::VALID_EMAIL_REGEX }
В моей форме я имею обычный
form_for @form_object ... do |f|
Если я pry
в и выяснить, что f.object_name
это я получаю users_password_and_login_updating_form
Наконец, мой config/locales/en.yml
выглядит так:
en:
activemodel:
errors:
models:
users_password_and_login_updating_form:
attributes:
requested_email_address:
invalid: "bar"
Вопрос, который у меня есть, я не могу заставить его использовать интернационализацию.
Нет, я не думаю, что так, как эта форма _не_ наследует от ActiveRecord. Я просто попробовал, хотя и не повезло. –
Два предложения: во-первых, если вы еще этого не сделали, взгляните на это - http://api.rubyonrails.org/classes/ActiveModel/Errors.html - особенно первый блок кода и текст под ним, который читает «Последние три метода требуются в вашем объекте для ошибок, чтобы они могли корректно генерировать сообщения об ошибках, а также обрабатывать несколько языков». Это Rails 5. Во-вторых, проверьте это - http://stackoverflow.com/questions/17935597/ruby-on-rails-i18n-want-to-translate-custom-messages-in-models - и посмотрите, можете ли вы заставить его работать как сообщение об ошибке проверки подлинности. – eggroll