У меня есть простая активная рекордная проверка на объекте с помощью этого в форме:
form.error_messages({:message => '', :header_message => ''})
Это в свою очередь производит что-то как "FieldName Мое Пользовательское сообщение"
То, что я должен сделать, удаляют имя поля из сообщения об ошибке, но оставляют мое пользовательское сообщение.
Может любой указывать на меня в правильном направлении для этого.
Один из способов получить полный контроль над сообщениями - использовать пользовательский блок validate
в модели. например чтобы проверить, не является ли поле пустым, это будет выглядеть так:
class MyModel < ActiveRecord::Base
validate do |model|
model.errors.add_to_base("My Custom message") if user.field.blank?
end
end
add_to_base
предназначен для добавления сообщений, не связанных с конкретным отдельным полем (например, если комбинация нескольких полей недопустима). Это означает, что CSS для выделения вашего недопустимого поля не будет добавлен. Вы можете обойти это, также добавив нулевое сообщение к ошибкам для вашего поля, например.
model.errors.add(:field, nil)
В качестве альтернативы, попробуйте плагин custom-err-message - этот плагин дает вам возможность не добавлять в ваше пользовательское сообщение об ошибке проверки префикс имени атрибута.
Обновление:
add_to_base
устарело с Rails 3. Вместо этого можно использовать следующее:
model_instance.errors.add (: base, "Msg")
Ссылка: https://apidock.com/rails/ActiveRecord/Errors/add_to_base
Вы можете получить доступ к экземпляру объекта errors напрямую, если вам нужен полный контроль над тем, как представлены сообщения.
Вы можете использовать errors.add_to_base http://api.rubyonrails.org/classes/ActiveRecord/Errors.html#M001712