Этот словарь можно расширить своими вариантами или ввести исключение, чтобы Person оставался Person.
В книге Agile Web Development with Rails (4th edition) на 270 странице разбирается этот вопрос. /config/initializers/inflections.rb
# Be sure to restart your server when you modify this file.
# Add new inflection rules using the following format
# (all these examples are active by default):
# ActiveSupport::Inflector.inflections do |inflect|
# inflect.plural /^(ox)$/i, '\1en'
# inflect.singular /^(ox)en/i, '\1'
# inflect.irregular 'person', 'people'
# inflect.uncountable %w( fish sheep )
# end
#
# These inflection rules are supported but not enabled by default:
# ActiveSupport::Inflector.inflections do |inflect|
# inflect.acronym 'RESTful'
# end
ActiveSupport::Inflector.inflections do |inflect|
inflect.irregular 'tax', 'taxes'
end
К сожалению, с ESC он работает не прекрасно :(
И, с учетом reset'a, следующий код не восстановит значение из data-before:
$('input').on('keydown', function(e){
if(e.keyCode === keys.ESC){
$(this).val($(this).data('before'));
}
});
Сейчас так и реализовал, но проблема — видно, как значение прыгает на предыдущее и только потом восстанавливается сохраненное. Пробовал отлавливать по keydown, но тогда значение вообще не восстанавливается.
В книге Agile Web Development with Rails (4th edition) на 270 странице разбирается этот вопрос.
/config/initializers/inflections.rb