博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Rails 自定义验证的错误信息
阅读量:4962 次
发布时间:2019-06-12

本文共 1738 字,大约阅读时间需要 5 分钟。

 

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.newuser.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.newuser.valid?user.errors.messages  #=> { :mobile=>["不能为空", "已占用"] } user.errors.full_messages  #=> [ "手机号 不能为空", "手机号 已占用"]

参考:

 

转载于:https://www.cnblogs.com/xiaoff/p/9356019.html

你可能感兴趣的文章
《人人都是产品经理》书籍目录
查看>>
如何在git bash中运行mysql
查看>>
OO第三阶段总结
查看>>
构建之法阅读笔记02
查看>>
DataTable和 DataRow的 区别与联系
查看>>
检索COM 类工厂中CLSID 为 {00024500-0000-0000-C000-000000000046}的组件时失败
查看>>
mysql数据库中数据类型
查看>>
Fireworks基本使用
查看>>
两台电脑间的消息传输
查看>>
Linux 标准 I/O 库
查看>>
.net Tuple特性
查看>>
Java基础常见英语词汇
查看>>
iOS并发编程笔记【转】
查看>>
08号团队-团队任务5:项目总结会
查看>>
SQL2005 删除空白行null
查看>>
mysql备份与恢复
查看>>
混沌分形之迭代函数系统(IFS)
查看>>
边框圆角Css
查看>>
使用Busybox制作根文件系统
查看>>
jpg图片在IE6、IE7和IE8下不显示解决办法
查看>>