从对象验证消息中删除字段名称

时间:2010-06-01 16:03:34

标签: ruby-on-rails ruby validation activerecord

我在一个表单中使用它来对对象进行简单的活动记录验证:

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

这反过来输出类似“FieldName My Custom message”

的内容

我需要做的是从错误消息中删除字段名称,但保留我的自定义消息。

任何人都可以指出我正确的方向。

4 个答案:

答案 0 :(得分:9)

完全控制消息的一种方法是在模型中使用自定义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。您可以通过为您的字段的错误添加nil消息来解决此问题,例如

model.errors.add(:field, nil)

或者,查看custom-err-message插件 - 此插件为您提供了不具有前缀为属性名称的自定义验证错误消息的选项。

<强>更新

自Rails 3以来,

add_to_base已弃用。可以使用以下代码: model_instance.errors.add(:base, "Msg")
参考:https://apidock.com/rails/ActiveRecord/Errors/add_to_base

答案 1 :(得分:8)

在rails 3.2.6中,您可以在区域设置文件中设置它(例如,config / locales / en.yml):

en:
  errors:
    format: "%{message}"

否则,默认格式为“%{attribute}%{message}”。

答案 2 :(得分:1)

答案 3 :(得分:0)

如果您需要完全控制消息的显示方式,则可以直接访问对象的errors实例。