经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » Ruby » 查看文章
Rails 自定义验证的错误信息
来源:cnblogs  作者:小芬喵  时间:2018/9/25 20:34:34  对本文有异议

 

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

1. 直接在:message添加文案

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

验证一下:

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

2. 使用 rails国际化API

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

  1. class ApplicationController < ActionController::Base
  2. before_action :set_locale
  3. def set_locale
  4. I18n.locale = user_locale
  5. # after store current locale
  6. cookies[:locale] = params[:locale] if params[:locale]
  7. rescue I18n::InvalidLocale
  8. I18n.locale = I18n.default_locale
  9. end
  10. protected
  11. def user_locale
  12. params[:locale] || cookies[:locale] || http_head_locale || I18n.default_locale
  13. end
  1. def http_head_locale
    request.env['HTTP_ACCEPT_LANGUAGE']
    end
  1. end

设置每个key对应的翻译值

  1. zh-CN:
  2. activerecord:
  3. attributes:
  4. taken: '已占用'
  5. blank: '不能为空'
  6. user:
  7. email: '邮箱'
  8. password: '密码'
  9. name: '姓名'
  10. mobile: '手机号'
  11. models:
  12. user: '用户'
  13. errors:
  14. messages:
  15. record_invalid: "%{errors}"
  16. taken: '已占用'
  17. blank: '不能为空'
  18. attributes:
  19. version: '版本'
  20. actions:
  21. create: '新增'
  22. update: '修改'
  23. destroy: '删除'

验证一下:

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

参考:

处理验证错误

Active Record 模型的翻译

 

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号