如何在Rails中设置字段的显示名称

时间:2011-12-16 13:08:48

标签: ruby-on-rails ruby activerecord

是否可以设置数据库字段的显示名称,而不是使用自动生成的显示名称?

我有一个字段bbe_date,在屏幕中,我使用'Best Before'作为显示的字符串。我手动设置了一些视图,但是有更好的方法吗?

如果字段名称以人类可读的形式发送到浏览器,这将有希望生效。我也特别考虑验证错误(因为那是我还没有手动处理过的!) - 我的验证代码正在执行:

record.errors.add :bbe_date, 'not valid'

但除非我特别拦截这个,否则我只看到'Bbe date not valid'作为验证错误。

2 个答案:

答案 0 :(得分:13)

您需要internationalization (I18N)。是的,即使你只是想要英语。

修改config / locales / en.yml,并设置:

en:
  activerecord:
    attributes:
      your_lower_case_model_name:
        bbe_date: Best Before

答案 1 :(得分:0)

这样做的一种方法是覆盖human_attribute_name的行为,它会为您提供默认的显示名称。在你的模型中:

HUMANIZED_ATTRIBUTES = {
  :bbe_date => "Best Before"
}

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

请注意,如果这是Rails 2,则需要从human_attribute_name中删除选项param。