今天不忙了,写点关于rails提示错误消息的方法,不完全的
因为默认的错误信息很难看,所以想去掉上面的英文信息,本地化信息
如果有辛能帮助你,甚感荣幸!
首先在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");
好了,就写到这里了,对你有帮助吗?
因为默认的错误信息很难看,所以想去掉上面的英文信息,本地化信息
如果有辛能帮助你,甚感荣幸!
首先在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");
好了,就写到这里了,对你有帮助吗?