• Rails验证信息的中文化


    用过Rails的朋友都知道,Rails的验证功能十分强大,只需要定义好业务逻辑就可以自动在表现层生成验证。下图是《Web开发敏捷之道》那本书中对Product验证的效果图:

    image

    问题是:这张图的所有文字都是英文的!!OK,让我们汉化他。

    第一步:汉化每一个项目的提示信息,将model/product.rb中类似下面的代码:

    validates_presence_of :title
    validates_presence_of :description
    validates_presence_of :image_ur
    validates_numericality_of :price
    validates_uniqueness_of :title
    validates_format_of :image_url, 
      :with    => %r{\.(gif|jpg|png)$}i
    改成:
    validates_presence_of :title, :message => "请输入产品名称。"
    validates_presence_of :description, :message => "请输入产品描述。"
    validates_presence_of :image_url, :message => "请输入产品图片连接。"
    validates_numericality_of :price, :message => "请输入正确的产品价格。"
    validates_uniqueness_of :title, :message => "该产品名名称已存在。"
    validates_format_of :image_url, 
      :with    => %r{\.(gif|jpg|png)$}i,
      :message => "产品图片必须是指向GIF, JPG或PNG图像的连接。"
    

    每一个validates操作,都可以有一个message用来表示验证失败的错误信息,把它改成中文的就OK!当然,也有自动化的办法,可以消除掉类似“请输入”这样的重复。但是对于英文的title,description,image_url这样的词,是不可能自动化的。所以上述方法的效果更好。下面是效果图:

    image

    哦,天,What fuck is that?!! 不要紧,这是因为Rails的自动话验证格式的问题。

    在Helper/application_helper.rb中加入这个方法:

    def error_messages_for(object_name, options = {}) 
      options = options.symbolize_keys 
      object = instance_variable_get("@#{object_name}") 
      unless object.errors.empty? 
        error_lis = [] 
        object.errors.each{ |key, msg| error_lis << content_tag("li", msg) } 
        content_tag("div", content_tag(options[:header_tag] || "h2", "发生#{object.errors.count}个错误" ) + content_tag("ul", error_lis), "id" => options[:id] || "errorExplanation", "class" => options[:class] || "errorExplanation" ) 
      end
    end
    

    就会出现这个效果了:

    image

    OK,收工了。至于那个函数的作用,保证你一下子就能看明白!

    转自:http://yuandong.cnblogs.com/

  • 相关阅读:
    SimpleITK学习(二)图像读取
    SimpleITK学习(一)基本概念
    pydicom读取dicom文件报错
    【Python】模拟登录上海西南某高校校园网 (jaccount)
    Leetcode 5
    【C++】枚举类型及其用法
    Leetcode 617 合并二叉树
    【端口转发】如何在外面访问家里的内网计算机?
    Python字典列表字段重组形成新的字典
    Android使用JDBC连接数据库
  • 原文地址:https://www.cnblogs.com/stalwart/p/1864486.html
Copyright © 2020-2023  润新知