浏览 2810 次
锁定老帖子 主题:rails 可以修改错误信息
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-11-09
因为默认的错误信息很难看,所以想去掉上面的英文信息,本地化信息 如果有辛能帮助你,甚感荣幸! 首先在rails1.2文档或者网上找到error_messages_for的源码,如下: 120: def error_messages_for(*params) 121: options = params.last.is_a?(Hash) ? params.pop.symbolize_keys : {} 122: objects = params.collect {|object_name| instance_variable_get("@#{object_name}") }.compact 123: count = objects.inject(0) {|sum, object| sum + object.errors.count } 124: unless count.zero? 125: html = {} 126: [:id, :class].each do |key| 127: if options.include?(key) 128: value = options[key] 129: html[key] = value unless value.blank? 130: else 131: html[key] = 'errorExplanation' 132: end 133: end 134: header_message = "#{pluralize(count, 'error')} prohibited this #{(options[:object_name] || params.first).to_s.gsub('_', ' ')} from being saved" 135: error_messages = objects.map {|object| object.errors.full_messages.map {|msg| content_tag(:li, msg) } } 136: content_tag(:div, 137: content_tag(options[:header_tag] || :h2, header_message) << 138: content_tag(:p, 'There were problems with the following fields:') << 139: content_tag(:ul, error_messages), 140: html 141: ) 142: else 143: '' 144: end 145: end 出现英文信息的是134行和138和139行,其他的不管,就改这三行 首先把134行的header_message引号去掉 改成header_message=""就好了 再到138行把单引号的内容去掉也OK了 139行就是我们在模型里定义的message信息了,不要修改拉 还有一点小提示: 在模型里有validate方法里,默认的是 error_add(:price,"前面的price是字段名,具体信息具体对待,里面这写就是显示在网页里的内容!") 这样的话网页里还会出现"Price"字样,我们可以不需要它 改为 error_add("","djisjdijisdf"); 或者 error_add("价格","djisjdijisdf"); 好了,就写到这里了,对你有帮助吗? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-11-09
忘记了,把这个东西放在app/application_helper.rb里
最后结果如下: def error_messages_for(*params) options = params.last.is_a?(Hash) ? params.pop.symbolize_keys : {} objects = params.collect {|object_name| instance_variable_get("@#{object_name}") }.compact count = objects.inject(0) {|sum, object| sum + object.errors.count } unless count.zero? html = {} [:id, :class].each do |key| if options.include?(key) value = options[key] html[key] = value unless value.blank? else html[key] = 'errorExplanation' end end error_messages = objects.map {|object| object.errors.full_messages.map {|msg| content_tag(:li, msg) } } content_tag(:div, content_tag(:p, '') << content_tag(:ul, error_messages), html ) else '' end end |
|
返回顶楼 | |