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

Dan*_*ark 10 activerecord ruby-on-rails

可能重复:
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
Run Code Online (Sandbox Code Playgroud)

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

小智 29

我认为将human_attribute_name与I18n框架一起使用更简单:

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

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

en:
  activerecord:
    attributes:
      user:
        email: E-mail address
Run Code Online (Sandbox Code Playgroud)


Bri*_*ing 6

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

def self.human_attribute_name(attr, options = {})
  HUMANIZED_ATTRIBUTES[attr.to_sym] || super
end
Run Code Online (Sandbox Code Playgroud)

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

  • 除非我误解你在做什么,否则我认为super.titleize会做同样的事情,也就是说,把所有的词都大写."foo bar baz".titleize =>"Foo Bar Baz" (2认同)