Bruce 的玩具間

my works and notes on ruby, rails, git, ubuntu linux, mac os x, etc...

Rails 3 HOW TO remove attribute prefix from validation error messages

| Comments

Traditional Chinese version is at RailsFun.

正體中文版在台灣Rails正體中文論壇RailsFun.

First, in most cases, you should translate displayed attribute name by i18n. Here are some solutions, including i18n way:

in Ruby Forum

in stackoverflow

But in my case, I just want to remove it from displaying. And if you want it too. This is my solution (thought a little bit ugly):

put it in initializers/override_human_attribute_name.rb

    class ActiveRecord::Base  
     def self.human_attribute_name(*attribute)  
     super(*attribute)  
     return ""  
     end  
    end  

And restart the rails server.

By the way, in in Ruby Forum. There is a solution that override human_attribute_name too with a custom mapping HUMANIZED_COLUMNS hash. But the solution doesn't work straightly. It's because in ActiveModel::Errors have it's own count method. Which need some calculate in human_attribute_name. And if you don't provide it in your override. It will fail on calling model_instance.errors.count

That's why i call super before returning empty string. Maybe you got better solution. Welcome provide in follow. I will appreciate your sharing!

Comments

comments powered by Disqus