在Rails中error_messages_for为国际化的考虑不是很周全,它显示的是模型的字段名称,这对于用户来说是不友好的。为了解决这个问题,只能改它的源码了----将如下方法,放入ApplicationHelper
代码
- def error_messages_for(*params)
- #add by glchengang
- key_hash = {}
- if params.first.is_a?(Hash)
- key_hash = params.first
- params.delete_at(0)
- end
- #add end
- 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
- # change by glchengang
- header_message = "有#{count}个错误"
- # header_message = "#{pluralize(count, 'error')} prohibited this #{(options[:object_name] || params.first).to_s.gsub('_', ' ')} from being saved"
- #add by glchengang
最新评论共有 0 位网友发表了评论
查看所有评论
发表评论

