Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何在Rails中设置字段的显示名称_Ruby On Rails_Ruby_Activerecord - Fatal编程技术网

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

Ruby on rails 如何在Rails中设置字段的显示名称,ruby-on-rails,ruby,activerecord,Ruby On Rails,Ruby,Activerecord,是否可以为数据库字段设置显示名称,而不是使用自动生成的名称 我有一个字段bbe_date,在屏幕上,我使用“Best Before”作为显示的字符串。我已经看过一些手动设置的视图,但是有更好的方法吗 只要将字段名以人类可读的形式发送到浏览器,这就有望生效。我还特别考虑了验证错误(因为这是我尚未手动处理的部分!)-我的验证代码正在执行: record.errors.add :bbe_date, 'not valid' 但是,除非我专门截取它,否则我只会将“Bbe date not valid”视

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

我有一个字段
bbe_date
,在屏幕上,我使用“Best Before”作为显示的字符串。我已经看过一些手动设置的视图,但是有更好的方法吗

只要将字段名以人类可读的形式发送到浏览器,这就有望生效。我还特别考虑了验证错误(因为这是我尚未手动处理的部分!)-我的验证代码正在执行:

record.errors.add :bbe_date, 'not valid'
但是,除非我专门截取它,否则我只会将“Bbe date not valid”视为验证错误。

您需要。是的,即使你只是想学英语

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

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

一种方法是覆盖
human\u attribute\u name
的行为,它为您提供默认的显示名称。在您的模型中:

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

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

请注意,如果这是Rails 2,则需要从human_属性_name中删除options参数。

为什么不重构要命名为
best_的字段?只是一个想法。这是可能的,但我不希望仅仅因为客户希望看到字段的不同名称而更改数据库。这不是一个通用的解决方案,因为即使是原始的BBE日期名称也会自动生成为BBE日期-Rails不知道BBE是首字母缩略词。很抱歉延迟接受答案!刚开始,效果很好