【问题标题】:Ruby on Rails: How to customize validation error message?Ruby on Rails:如何自定义验证错误消息?
【发布时间】:2011-10-06 06:03:44
【问题描述】:

我有以下代码:

validates :name, :presence => true

产生的错误信息是“名称不能为空” 我不想使用实际的属性名称(在本例中为“名称”) 显示消息为“注册名称不能为空”。 如何覆盖验证的默认消息?我尝试附加 :message 但它没有用......

谢谢!

【问题讨论】:

    标签: ruby-on-rails-3 validation


    【解决方案1】:

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

    activerecord: 
      attributes:
        model_name:
          attribute_name1: key1
          attribute_name2: key2
                     ......
    

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

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

    【讨论】:

    • 从未听说过。哇,学到了一些新东西-很好的答案! :)
    • @ream88 - 第二个。确实很好的答案,肯定会使用这个。几个月前,我以前使用过一个 gem,用于自定义错误消息。 gem 托管在github.com/nwise/custom_error_message
    • 对于未来的读者,如果不清楚,en.yml 文件位于 config/locales
    • 先生可以显示您的代码吗?我收到一条错误消息,说“无法加载翻译 en.yml,预计它会返回哈希,但没有”
    【解决方案2】:

    这样就可以了:

    validates :name, presence: { message: "Registration name can't be blank" }
    

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

    validates :name, :presence => { :message => "Registration name can't be blank" }
    

    【讨论】:

    • 但是我仍然看到评论为“名称注册名称不能为空”我想从消息中删除“名称”一词...
    • 但是这个问题和你的观点有关。
    • 您肯定有一些代码,例如:<% model.errors.each do |name, error| %> <%= name %><%= error %> <% end %><%= name %> 是第一个 name 来自。
    【解决方案3】:

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

    此插件允许您省略特定消息的属性名称。您所要做的就是以“^”字符开始消息。

    我刚刚在 https://github.com/nwise/custom_error_message & 自 3 月以来一直没有更新。所以,我可能在正确的时间使用它。

    ps:不过,您在 yml 文件中定义自定义键的答案更合适。

    【讨论】:

      猜你喜欢
      • 2012-04-29
      • 1970-01-01
      • 2011-04-11
      • 2016-11-08
      • 2022-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多