2010-06-01 199 views
7

我有一个对象上的表单中使用这种简单的活动记录验证:删除域名

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

这反过来输出类似“字段名我的自定义信息”

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

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

回答

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将不会被添加。您也可以通过向您的字段的错误添加一条零消息来完成此工作,例如

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

+0

欢呼mikej,自定义err-message插件做了我想要的 – pythonandchips 2010-06-02 10:26:46

+0

还有一个[gem](https://github.com/thethanghn/custom-err-msg)在Rails 4中为我工作。 – dusan 2014-07-17 15:13:43

0

您可以访问对象的errors例如直接,如果你需要完全控制关于消息如何呈现。

7

在Rails 3.2.6,你可以在一个区域文件(例如,配置/区域设置/ en.yml)设置此:

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

否则,默认格式为“%{}属性{%信息}”。

+1

这也适用于4.0.2。 – Deborah 2013-12-08 04:04:06

+0

仍在4.1.1上工作 – 2014-08-08 18:21:28