Помощник 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