Как мне сказать Rails, как правильно использовать аббревиатуру? - PullRequest
5 голосов
/ 29 апреля 2009

У меня есть поле с именем sui в одной из моих моделей. Это означает «Стандартный идентификатор пользователя». При наличии ошибок валидации в поле Rails выводит «Требуется Sui» или «Sui уже занят».

Как я могу сказать Rails, что 'sui'.titleize это "SUI"? Я посмотрел на Inflector.human, но это не совсем верно.

Ответы [ 2 ]

7 голосов
/ 29 апреля 2009

В таких случаях я использую плагин custom_err_msg . После установки вы можете выдавать пользовательские сообщения об ошибках, такие как:

validates_presence_of :sui, :message => '^SUI is required'

Когда вы ставите ^ в начале, тогда Rails не ставит имя поля.

EDIT: Есть еще один плагин i18n_label , используемый для переводов, но с его помощью вы можете очень просто заменить имя вашего поля чем-то более приятным (на странице плагина есть пример). Это заменит имя в:

<%= f.label :sui %>
YourModel.human_attribute_name "sui"

и в сообщениях об ошибках.

3 голосов
/ 25 марта 2014

Вы можете сделать это, настроив ActiveSupport :: Inflector , который предоставляет метод titleize . Просто определите свои перегибы в инициализаторе.

# config/initializers/inflections.rb
ActiveSupport::Inflector.inflections do |inflect|
  inflect.acronym 'SUI'
end

Перезапустите приложение, чтобы получить изменения. Теперь titleize знает, как обращаться с "SUI". Запустите консоль Rails, чтобы проверить это:

> "sui".titleize
=> "SUI"

См. Связанные документы для более интересных вещей, которые вы можете сделать с перегибами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...