удалите имя поля из объектного сообщения проверки

У меня есть простая активная рекордная проверка на объекте с помощью этого в форме:

  form.error_messages({:message => '', :header_message => ''})

Это в свою очередь производит что-то как "FieldName Мое Пользовательское сообщение"

То, что я должен сделать, удаляют имя поля из сообщения об ошибке, но оставляют мое пользовательское сообщение.

Может любой указывать на меня в правильном направлении для этого.

7
задан shingara 1 June 2010 в 16:16
поделиться

3 ответа

Один из способов получить полный контроль над сообщениями - использовать пользовательский блок 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

9
ответ дан 6 December 2019 в 09:58
поделиться

Вы можете получить доступ к экземпляру объекта errors напрямую, если вам нужен полный контроль над тем, как представлены сообщения.

0
ответ дан 6 December 2019 в 09:58
поделиться

Вы можете использовать errors.add_to_base http://api.rubyonrails.org/classes/ActiveRecord/Errors.html#M001712

1
ответ дан 6 December 2019 в 09:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: