Rails 自定义验证的错误信息
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 #=> [ "手机号 不能为空", "手机号 已占用"]
参考:
Rails 自定义验证的错误信息的更多相关文章
- AngularJS 表单数据验证及错误信息提示
一.表单验证基本原理 表单验证包括两个主题: 定义验证规则,验证数据有效性. 显示验证结果,把验证结果以友好的方式显示给用户. H5内置一些验证功能,并会显示内置的错误提示信息,先要禁用它,在< ...
- [oldboy-django][2深入django]form表单clean_xx, clean完成数据验证+ form错误信息
form后台生成form里面的Input标签,以及设置Input的属性 # 需求 后台生成form里面的input标签,并设置input标签的属性, class RegisterForm(Form): ...
- egg框架实现表单验证及获取验证的错误信息
最近再看egg框架 是阿里今年开源的一款基于nodejs的mvc架构的web框架 感兴趣的同学可以看看 因为之前一直做php的关系 在tp,yii,laravel这些框架中对于前台发送的数据,模型里都 ...
- Python自动化之ajax返回表单验证的错误信息和序列化扩展
form内置序列化错误 如果使用form提交数据的时候,可以直接返回错误信息到模板里面进行渲染 但是如果使用ajax处理呢 from django import forms from django.f ...
- php 上传文件并对上传的文件进行简单验证(错误信息,格式(防伪装),大小,是否为http上传)
<body> <?php /** *验证错误 *如果有错,就返回错误,如果没错,就返回null */ function check($file) { //1:验证是否有误 if($f ...
- spring-Formatter(格式化器)-validator(验证器)-错误信息定制
项目结构
- MVC5 自定义表单错误信息
1.
- Extjs 表单验证后,几种错误信息展示方式
今天要求对form表单验证,进行系统学习一下,故做了几个示例: Ext.onReady(function(){ var panel=Ext.create('Ext.form.Panel' ...
- Django-Form表单(验证、定制、错误信息、Select)
Django form 流程 1.创建类,继承form.Form 2.页面根据类的对象自动创建html标签 3.提交,request.POST 封装到类的对象里,obj=UserInf ...
随机推荐
- redis介绍(5)主从复制
redis的主从复制: 主从复制介绍:redis的主从复制情况下,一个master节点下可以有多个slave节点,而且每个slave节点又可以有很多slave节点,形成很大的集群量级,我简单画个图,如 ...
- 从Azure上构建Linux应用程序映像
下图描述了总体的虚拟机的VHD映像生成以及发布到 Azure Azure 镜像市场的全过程: 具体步骤如下: 从Azure管理平台上Linux申请虚拟机, 安装和配置您要发布的应用软件产品,制作成映像 ...
- Oracle EBS GL 创建会计科目
SELECT ct.trx_number ,l.accounting_class_code ,l.entered_dr ,l.entered_cr ,fnd_flex_ext.get_segs('SQ ...
- 关于nicescroll滚动条现在浏览器上滚动问题
nativeparentscrolling: false //检测内容底部,并让父节点来滚动,作为原生滚动 有时候 当自定义滚动条在底部 滚动无效 可以把这个参数设置一下
- tshark----wireshark的命令行工具
tshark - 转储和分析网络流 概要 tshark的 [ -2 ] [ -a <捕捉自动停止条件>] ... [ -b <捕捉环形缓冲区选项>] ... [ ...
- javascript版format函数,方便实现复杂字串连接
javascript版format函数,方便实现复杂字串连接 String.prototype.format = function () { var args = arguments; console ...
- [翻译] SIAlertView
SIAlertView https://github.com/Sumi-Interactive/SIAlertView An UIAlertView replacement with block sy ...
- 去除Xcode6创建工程时自带的storyboard
去除Xcode6创建工程时自带的storyboard 1. 删除storyboard文件,并在setting里面清空加载storyboard: 2. 导入ViewController到appDeleg ...
- 外键应用(foreignkey)、多对多
1.创建model: 定义hv表,保存hv server infors: 定义vm表,保存vm infors: 一个vm只能对应一台hv server:一台hv server可以包含有多台vm cla ...
- 深入理解python中的yield关键字
想必大家都看过这样的代码: 上面的这段代码会计算0-9的平方并打印出来. 那么问题来了,这段代码和我们要说的东西有什么区别呢? 这里的关键字,yield,我在前面的文章里已经发过了.那么yield是什 ...