Active Record 验证辅助方法的默认错误消息都是英文,为了提高用户体验,有时候我们经常会被要求按特定的文本展示错误信息。此时有两种实现方式。

1. 直接在:message添加文案

class User < ActiveRecord::Base
 validates :email,
presence: { message: '邮箱不能为空!' },
uniqueness: { message: '邮箱 %{value} 已存在!' }
validates :name,
presence: { message: '姓名不能为空!' },
length: { maximum: 255, too_long: '姓名最多为255个字符' }
end

验证一下:

user = User.new
user.valid?
user.errors.messages
#=> { :email=>["邮箱不能为空!"], :name=>["姓名不能为空!"]} 

2. 使用 rails国际化API

在config/locales文件下已经存在一个默认的en.yml文件,我们可以再添加一个 zh-CN.yml 文件作为中文的翻译

class ApplicationController < ActionController::Base
before_action :set_locale
def set_locale
I18n.locale = user_locale
# after store current locale
cookies[:locale] = params[:locale] if params[:locale]
rescue I18n::InvalidLocale
I18n.locale = I18n.default_locale
end protected
def user_locale
params[:locale] || cookies[:locale] || http_head_locale || I18n.default_locale
end
  def http_head_locale
request.env['HTTP_ACCEPT_LANGUAGE']
end
end

设置每个key对应的翻译值

zh-CN:
activerecord:
attributes:
taken: '已占用'
blank: '不能为空'
user:
email: '邮箱'
password: '密码'
name: '姓名'
mobile: '手机号'
models:
user: '用户'
errors:
messages:
record_invalid: "%{errors}"
taken: '已占用'
blank: '不能为空'
attributes:
version: '版本'
actions:
create: '新增'
update: '修改'
destroy: '删除'

验证一下:

class User < ActiveRecord::Base
validates :mobile,
presence: true,
uniqueness: true,
end
user = User.new
user.valid?
user.errors.messages #=> { :mobile=>["不能为空", "已占用"] }
user.errors.full_messages #=> [ "手机号 不能为空", "手机号 已占用"]

参考:

处理验证错误

Active Record 模型的翻译

Rails 自定义验证的错误信息的更多相关文章

  1. AngularJS 表单数据验证及错误信息提示

    一.表单验证基本原理 表单验证包括两个主题: 定义验证规则,验证数据有效性. 显示验证结果,把验证结果以友好的方式显示给用户. H5内置一些验证功能,并会显示内置的错误提示信息,先要禁用它,在< ...

  2. [oldboy-django][2深入django]form表单clean_xx, clean完成数据验证+ form错误信息

    form后台生成form里面的Input标签,以及设置Input的属性 # 需求 后台生成form里面的input标签,并设置input标签的属性, class RegisterForm(Form): ...

  3. egg框架实现表单验证及获取验证的错误信息

    最近再看egg框架 是阿里今年开源的一款基于nodejs的mvc架构的web框架 感兴趣的同学可以看看 因为之前一直做php的关系 在tp,yii,laravel这些框架中对于前台发送的数据,模型里都 ...

  4. Python自动化之ajax返回表单验证的错误信息和序列化扩展

    form内置序列化错误 如果使用form提交数据的时候,可以直接返回错误信息到模板里面进行渲染 但是如果使用ajax处理呢 from django import forms from django.f ...

  5. php 上传文件并对上传的文件进行简单验证(错误信息,格式(防伪装),大小,是否为http上传)

    <body> <?php /** *验证错误 *如果有错,就返回错误,如果没错,就返回null */ function check($file) { //1:验证是否有误 if($f ...

  6. spring-Formatter(格式化器)-validator(验证器)-错误信息定制

    项目结构

  7. MVC5 自定义表单错误信息

    1.

  8. Extjs 表单验证后,几种错误信息展示方式

    今天要求对form表单验证,进行系统学习一下,故做了几个示例: Ext.onReady(function(){        var panel=Ext.create('Ext.form.Panel' ...

  9. Django-Form表单(验证、定制、错误信息、Select)

      Django form 流程 1.创建类,继承form.Form 2.页面根据类的对象自动创建html标签 3.提交,request.POST       封装到类的对象里,obj=UserInf ...

随机推荐

  1. JSON学习笔记-2

    JSON的语法 1.JSON 数据的书写格式是:名称/值对. "name" : "我是一个菜鸟" 等价于这条 JavaScript 语句: name = &qu ...

  2. maven windows环境nexus3.0私服搭建

    下载 nexus3.x.x 需要JDK1.8版本到sonatype官网下载开源免费的OSS版本,OSS即为Open Source Software.下载地址:https://www.sonatype. ...

  3. Oracle DUL/AUL/ODU 工具说明

    转自 http://blog.csdn.net/launch_225/article/details/7523195 假设我们的数据库遇到以下情况: 第一, 没有备份; 第二, 常规方法无法恢复; 第 ...

  4. 一个Interface 继承多个Interface 的总结

    我们知道在Java中的继承都是单继承的,就是说一个父类可以被多个子类继承但是一个子类只能有一个父类.但是一个接口可以被不同实现类去实现,这就是我们说的Java中的多态的概念.下面我们再来说一下接口的多 ...

  5. ubuntu16.04安装网易云音乐

    源网址 对于网易,我只服云音乐,业界良心,用过的人都知道.我最喜欢的就是歌曲的评论功能,还有朋友圈子.里面有很多好段子,还有很多的好故事,基本上,不是分手,就是回忆初恋,还有吐槽的.我认为音乐带给人的 ...

  6. 用Use Case获取需求的方法是否有缺陷,还有哪些地方需要改进

    (提示:是否对所有应用领域都适用?使用的方便性?......) Use Case使用原则: 1.通过讲简单的故事来传递消息 讲故事是最有效的人与人交流信息的途径.通过讲故事(Use Case),团队成 ...

  7. 探究MySQL MGR的读写分离

    1:现有环境 机器 MySQL 环境 172.16.128.240 MGR NODE1 MGR 172.16.128.241 MGR NODE2 MGR 172.16.128.242 MGR NODE ...

  8. C# 实现水印

    直接上源码 public class WaterTextBox : TextBox { //private const int EM_SETCUEBANNER = 0x1501; //[DllImpo ...

  9. 用Model来计算cell的高度

    用Model来计算cell的高度 效果: 将计算cell高度的方法直接移植到Model当中,初始化的瞬间就计算好了高度,非常好用! 源码: Model // // Model.h // // Copy ...

  10. Linux配置自动发送邮件

    需要的工具:sendEmail 和 linux自带的定时工具:crontab 1.sendEmail的使用: 具体参数解释: -f zhangshibo706@163.com 发件人邮箱 -t 453 ...