`
cvu
  • 浏览: 106496 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

Re: [问题]关于验证后出错的显示

阅读更多
seairy在论坛里问:
引用
在models添加validates_xxx方法后,页面的出错信息标题如何更改默认呢?

比如红色框的标题是
1 error prohibited this customer from being saved

还有就是我更改了environment.rb中的ActiveRecord::Errors.default_error_messages,例如::blank => "不能为空",但是错误提示中显示的字段名仍然是英文,例如:“Name 不能为空”,请问“Name”如何更改为我希望的名称呢?


我的解决方案是,在app/helpers/application_helper.rb里重写rails的error_messages_for函数:
  def error_messages_for(object_name, options = {})
    options = options.symbolize_keys
    object = instance_variable_get("@#{object_name}")
    if object && !object.errors.empty?
      content_tag("div",
        content_tag(
          options[:header_tag] || "h2",
          "保存该#{object.class::ALIAS}时发生#{object.errors.count}个错误。"
        ) +
        content_tag("ul", object.errors.collect { |attr, msg| content_tag("li", object.class::COLUMN_ALIASES[attr] + msg) }),
        "id" => options[:id] || "errorExplanation", "class" => options[:class] || "errorExplanation"
      )
    else
      ""
    end
  end


请注意这里面的两个ALIAS,一个是object.class::ALIAS,一个是object.class::COLUMN_ALIASES[attr]。就用你的例子来说明这两个alias:
class Customer < ActiveRecord::Base
  ALIAS = '客户'
  COLUMN_ALIASES = {
    'name' => '客户名称',
    'address' => '地址'
    # some other columns
  }
  
  # other codes in this model
end


这样的话,再加上你在environment.rb中设置的ActiveRecord::Errors.default_error_messages,他的报错信息就会是:
保存该客户时发生2个错误。
    * 客户名称不能为空。
    * 地址不能为空。


今天看到一个很好的i18n/l10n的Ruby库:gibberish。这是一个很干净,很ruby的实现方式,也许用它可以有更好的解决方法。
分享到:
评论

相关推荐

    RE浏览器(Root Explorer) v3.1.6.zip

    RE浏览器(Root Explorer)是一款安卓手机专用的文件管理器,在获取系统ROOT权限后能对系统里的任何文件进行操作,能够轻而易举的删除手机系统程序和删不掉的程序,也可以作为普通的文件管理软件使用。 RootExplorer...

    cmd控制台所有的命令.txt

    - `/RE characters`:指定记录的最大长度。 - 示例:`sort file.txt /R /L "zh-CN"` 将按中文区域设置反向排序 `file.txt` 文件中的内容。 #### 3. `START` **功能**:`START` 命令用于启动一个新的命令提示符窗口...

    如何根据Wowza服务器日志中的出错信息进行故障排查

    ### 如何根据Wowza服务器日志中的出错信息进行故障排查 #### WowzaMediaServer的日志分析 在处理WowzaMediaServer的相关问题时,我们常常需要依赖于Wowza的日志文件来定位问题所在。其中,`wowzamediaserver_...

    softap_ap6212a0_tinav2.1_验证通过_旧版本的系统_20170915_1223没有外层目录.7z

    You're building on Linux Lunch menu... pick a combo: 1. tulip_d1-tina 2. tulip_d1-dragonboard 3. octopus_sch-tina 4. octopus_sch-dragonboard 5. azalea_perf2-tina 6. azalea_perf2-...

    个人代码细节错误总结123456789

    - **问题描述**:编写涉及前缀和的问题时,容易出错,未进行足够的测试和验证。 - **解决策略**:编写完成后,进行详尽的测试和验证,包括对拍。 #### 21. 最短路径的初始化 - **问题描述**:最短路径问题中,初始...

    正则表达式工具.zip

    总之,“正则表达式工具”是一个非常实用的开发辅助软件,尤其对那些频繁处理字符串格式验证的开发者来说,它能大大提高工作效率,降低出错概率。通过压缩包中的“新建文件夹”可能包含了这个工具的安装程序或可执行...

    Oracle Max函数使用中出现的问题

    3. **优化数据类型和格式**:确保`RE_DATE`列的数据类型和格式正确无误,避免隐式转换带来的问题。 通过以上分析,我们可以得出结论,当Oracle Max函数在特定环境下未按预期工作时,需要检查异常处理机制、查询语句...

    计算机组成原理实验报告(含源码)

    ### 计算机组成原理实验知识点总结 #### 实验一:数制转换 **实验目的:** 1. 掌握不同进制数据之间的相互转换...这些实验不仅帮助学生理解和掌握计算机内部数据表示的基本原理,还能够提升他们解决实际问题的能力。

    UG加工模拟操作规范书

    UG加工模拟操作规范书主要针对的是使用UG软件进行模具、产品和零部件编程时的加工模拟,目的是降低出错率,防止工件过切、撞刀等质量问题。以下是一些关键的知识点: 1. **文件格式要求**:在开始编程之前,确保...

    利用python自动生成verilog模块例化模板.docx

    随着集成电路设计的复杂度不断增加,手动编写大量的Verilog代码变得既耗时又容易出错。因此,自动化工具的需求变得越来越迫切。本文将介绍如何利用Python语言自动生成Verilog模块的实例化模板,以提高工作效率。 ##...

    登录页面自动适配移动端,登录注册平滑切换

    .catch(error =&gt; alert('请求出错:' + error)); }); ``` 综上所述,通过HTML5的响应式设计、CSS3的媒体查询以及JavaScript的交互处理,我们可以创建一个既适应移动端又能平滑切换登录注册功能的高效网页。这个...

    软件项目开发文档模板-全套

    8. **RE文档(可能是指需求工程文档)**:这通常包含了需求获取、需求分析、需求验证等过程,是需求管理的重要组成部分。 9. **风险管理**:在项目开发中,风险管理章节用于识别潜在的风险,制定应对策略,预防或...

    极好用的刻录软件(绿色软件,无需安装)

    4. **验证刻录结果**:刻录完成后,软件通常会提供验证选项,检查数据是否成功写入,确保刻录质量。 在“极好用的刻录软件”这个压缩包内,可能包含软件的执行文件、帮助文档、许可证文件等,用户只需按照常规步骤...

    camunda清除表数据脚本.txt

    4. **脚本验证:** 对脚本进行充分的验证,确保其正确性后再应用于实际环境中。 通过以上分析,我们可以看出这份脚本覆盖了Camunda数据库中大部分重要的表结构,有效地帮助开发者快速清空数据库中的数据,提高开发...

    Python 正则表达式(转义问题)

    Python正则表达式是处理字符串的强大工具,它通过使用特定的符号序列来匹配...在实际编程中,正确地使用正则表达式不仅可以解决文件名等命名问题,还可以处理网络协议、日志文件、数据验证等多种场景的字符串处理任务。

    QA_Exercises:QA_Exercises

    异常处理是Python编程中不可或缺的部分,它允许你在代码出错时优雅地处理问题。你需要掌握`try/except`语句,以及如何使用`raise`语句来主动抛出异常。 5. **数据验证**: 数据验证确保输入或处理的数据符合预期...

    XML轻松学习手册--XML肯定是未来的发展趋势,不论是网页设计师还是网络程序员,都应该及时学习和了解

    XML对这一原理进行了深化和扩展,用XML,你可以描述你的信息在哪里,你可以通过meta来验证信息,执行搜索,强制显示,或者处理其他的数据。 下面是一些XML metadata在实际应用中的用途: 1.可以验证数字签名,使...

    正则表达式测试器,附文件读写功能,易用

    本项目提供了一个名为“正则表达式测试器”的应用程序,它基于Qt框架开发,具有友好的用户界面,方便用户进行正则表达式的测试和验证。 该测试器的核心功能包括: 1. **直接输入测试**:用户可以直观地在界面上...

Global site tag (gtag.js) - Google Analytics