【问题标题】:remove field name from object validation message从对象验证消息中删除字段名称
【发布时间】:2010-06-01 16:03:34
【问题描述】:

我在表单中使用 this 对对象进行了简单的活动记录验证:

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

这又会输出类似“FieldName My Custom message”之类的内容

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

谁能指出我正确的方向。

【问题讨论】:

    标签: ruby-on-rails ruby validation activerecord


    【解决方案1】:

    在 rails 3.2.6 中,您可以在语言环境文件(例如 config/locales/en.yml)中进行设置:

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

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

    【讨论】:

    • 如果你想从错误消息中全局删除属性,仍然在 5.2 中工作。
    【解决方案2】:

    完全控制消息的一种方法是在模型中使用自定义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 插件 - 这个插件让您可以选择不将自定义验证错误消息以属性名称作为前缀。

    更新:

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

    【讨论】:

    • 干杯 mikej,custom-err-message 插件正是我想要的
    • 还有一个 gem 在 Rails 4 中为我工作。
    【解决方案3】:

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 2011-07-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-24
        相关资源
        最近更新 更多