0
Это вопрос только о стиле кода.Должен ли я не допускать перевод I18n в моделях
Я работаю над многоязычным приложением в Ruby on Rails 4. Мое личное чувство говорит мне идеально, что я не звоню в I18n.t()
в моделях, я просто думаю, что методы модели должны быть последовательными и не зависят от различных экологических ситуаций, таких как текущий пользовательский язык, тем более, что I18n обычно связан с представлениями. У меня есть несколько вопросов об этом:
- Как вы думаете, это хорошее правило в целом?
- Как я могу управлять сообщениями об ошибках в пользовательских методах проверки? Должны ли я делать исключения для этого сценария?
- Как я могу управлять настраиваемыми ключами, которые мы используем в полях формы, например, отображаемый текст
collection_select
, которые частично переведены? Есть ли способ использовать помощники вида для этих случаев, то есть (почти) так же удобно, как и методы модели здания для них?
Звучит многообещающе. Я попробую добавить лямбду к выбранным помощникам, чтобы увидеть, работает ли это. Что касается сообщений об ошибках: я бы не знал, как это сделать, в настоящее время я использую 'errors.add' для добавления сообщения. Как мне это сделать? Использовать ключ трансляции в качестве сообщения об ошибке и перевести это в представлении? (Это не будет работать вместе с собственными сообщениями Rails.) Не могли бы вы привести мне пример того, как я должен делать ошибки проверки или указать мне правильное направление? –
Для ошибок, а также для имен атрибутов и т. Д., I18n уже поддерживает ActiveRecord с помощью 'ActiveModel :: Translate'. См. Http://guides.rubyonrails.org/i18n.html#translations-for-active-record-models. Вам просто нужно определить фактические сообщения для каждой конкретной ошибки и вызвать «.full_messages» в представлении. – rewritten
Для выбора, на самом деле вы можете предоставить вызываемые и для функций label и value в 'options_from_collection_for_select'. http://apidock.com/rails/v4.0.2/ActionView/Helpers/FormOptionsHelper/value_for_collection – rewritten