Rails 3.x中的人类属性名称?

时间:2011-01-24 20:20:38

标签: ruby-on-rails activerecord

  

可能重复:
  Custom model attribute (column name) title in Ruby on Rails

我一直在Rails 2.x中使用此解决方案:

   HUMANIZED_ATTRIBUTES = {
    :email => "E-mail address"
  }

  def self.human_attribute_name(attr)
    HUMANIZED_ATTRIBUTES[attr.to_sym] || super
  end

但是从ActiveRecord实例获取errors时会出现奇怪的错误。在Rails 3.x中获取漂亮的,可读的名称的正确方法是什么?

2 个答案:

答案 0 :(得分:29)

我认为将human_attribute_name与I18n框架结合起来更简单:

在您的视图中:User.human_attribute_name(“email”)

在您的语言环境yml文件中:

en:
  activerecord:
    attributes:
      user:
        email: E-mail address

答案 1 :(得分:6)

我认为正确的Rails 3方法是使用translation api,但我使用的是human_attribute_name,如下所示:

def self.human_attribute_name(attr, options = {})
  HUMANIZED_ATTRIBUTES[attr.to_sym] || super
end

对super的调用可能期望options参数存在。