Ruby on Rails:如何自定义验证错误消息?

dat*_*ser 7 validation ruby-on-rails-3

我有以下代码:

validates :name, :presence => true
Run Code Online (Sandbox Code Playgroud)

产生的错误信息是"名称不能为空"而不是使用实际的属性名称(在本例中为"名称")我想将消息显示为"注册名称不能为空".如何覆盖验证上的默认消息?我尝试追加:消息,但它不起作用......

谢谢!

dat*_*ser 14

在en.yml文件中,将自定义键定义为:

activerecord: 
  attributes:
    model_name:
      attribute_name1: key1
      attribute_name2: key2
                 ......
Run Code Online (Sandbox Code Playgroud)

生成错误时将自动使用此密钥.

参考:http://edgeguides.rubyonrails.org/i18n.html#translations-for-active-record-models (5.1活动记录模型的翻译)


Mar*_*her 7

这样就可以了:

validates :name, presence: { message: "Registration name can't be blank" }
Run Code Online (Sandbox Code Playgroud)

或旧的哈希火箭语法版本:

validates :name, :presence => { :message => "Registration name can't be blank" }
Run Code Online (Sandbox Code Playgroud)

  • 不......我认为这不是解决这个问题的正确方法. (3认同)
  • 但我仍然看到评论为“姓名注册名称不能为空”我想从消息中删除“姓名”一词...... (2认同)

pra*_*vin 6

它现在有点晚了(大约35天后)回答这个问题.所以,对不起.但只是想分享我已经使用了一个宝石,超过几个月前,用于自定义错误消息.

此插件允许您省略特定邮件的属性名称.您所要做的就是以"^"字符开头.

我刚刚在https://github.com/nwise/custom_error_message上查看了它, 自3月以来它还没有更新.所以,我可能在合适的时间使用它.

ps:您在yml文件中定义自定义键的答案更合适.