强迫“人性化”” Rails 3中字段的名称为小写

据我所知,在Rails 3中设置字段“人性化”名称的可接受方法是使用语言环境:
# config/locales/en.yml
en:
  activerecord:
    attributes:
      member:
        username: 'username' # rather than 'Username'
但是,我只是希望Rails 3使用其默认人性化名称的小写版本。有一种简单的内置方法吗? 一个帮助澄清的例子:当在
form_for
内时,
<%= f.label :username %>
默认显示“用户名”。我希望它显示“用户名”。     
已邀请:
label
帮助器默认使用human_attribute_name将属性转换为人名。如果你看一下来源,
human_attribute_name
会尝试一些事情,然后再回到
attributes.to_s.humanize
。它首先尝试翻译,然后在选项哈希中查找
:default
选项。 因此,获得所需功能的最简单/最好的方法是使用您自己的功能覆盖
human_attribute_name
,提供
:default
选项然后调用原始。 Rails提供了一种合理的方式来做
alias_method_chain
这样的事情,所以...... 我听够了,给我答案! 将以下内容放入
config/initializers
中的任何文件中并重新启动您的应用:
module ActiveModel
  module Translation
    def human_attribute_name_with_foo attribute, options = {}
      human_attribute_name_without_foo attribute, options.merge( :default => attribute.humanize.downcase )
    end

    alias_method_chain :human_attribute_name, :foo
  end
end
    
我有同样的问题。 我通过css解决了它: 在foo.html.erb中:
<%= f.label :username, :class => "my_class" %>
在bar.css中:
label.my_class {
    text-transform:   lowercase;
}
我也希望有一个不同的解决方案。但到目前为止,这是我唯一能找到的。     

要回复问题请先登录注册