pyt*_*ips 7 ruby validation activerecord ruby-on-rails
我在一个表单中使用它对一个对象进行了简单的活动记录验证:
form.error_messages({:message => '', :header_message => ''})
Run Code Online (Sandbox Code Playgroud)
这反过来输出类似"FieldName我的自定义消息"的内容
我需要做的是从错误消息中删除字段名称,但保留我的自定义消息.
任何人都可以指出我正确的方向.
完全控制消息的一种方法是validate在模型中使用自定义块.例如,要检查字段是否为空,它将是这样的:
class MyModel < ActiveRecord::Base
validate do |model|
model.errors.add_to_base("My Custom message") if user.field.blank?
end
end
Run Code Online (Sandbox Code Playgroud)
add_to_base用于添加与特定单个字段无关的消息(例如,如果多个字段的组合是非法的).这意味着不会添加用于突出显示无效字段的CSS.您可以通过为您的字段的错误添加nil消息来解决此问题,例如
model.errors.add(:field, nil)
Run Code Online (Sandbox Code Playgroud)
或者,查看custom-err-message插件 - 此插件为您提供了不具有前缀为属性名称的自定义验证错误消息的选项.
更新:
add_to_base自Rails 3以来不推荐使用.可以使用以下代码:
model_instance.errors.add(:base, "Msg")
Ref:https://apidock.com/rails/ActiveRecord/Errors/add_to_base
在rails 3.2.6中,您可以在语言环境文件中设置它(例如,config/locales/en.yml):
en:
errors:
format: "%{message}"
Run Code Online (Sandbox Code Playgroud)
否则,默认格式为"%{attribute}%{message}".
| 归档时间: |
|
| 查看次数: |
3128 次 |
| 最近记录: |