Лучший способ заставить Rails просматривать вывод (текст) динамически на основе пользовательских свойств?(аналогично i18n / locales) - PullRequest
0 голосов
/ 17 октября 2010

Мне нужно сделать определенные выходные данные из представлений динамическими в зависимости от «типа» пользователя, вошедшего в систему. В частности, «тип» пользователя зависит от типа бизнеса, в котором он находится, и использует мое приложение, поэтому, если они В розничном магазине мое приложение должно ссылаться на «клиенты», «продукты», «покупки» и т. д., в то время как другой тип пользователей в бизнесе, основанном на услугах, ожидает увидеть ссылки на «клиенты», «услуги», «обязательства» и скоро. Я абстрагировал другие аспекты своего приложения, чтобы они могли работать с обоими типами пользователей, но мне нужен способ динамического отображения «клиент» против «клиент», «продукт» против «сервис» и так далее. (Я несколько упростил проблему - различия в формулировках более распространены, чем примеры, которые я привел здесь, и в некоторых ситуациях различия в формулировках также появляются в моделях, например, в сообщениях об ошибках валидации.)

Это похоже на локали и интернационализацию, но я не хочу смешивать решение, основанное на локалях, а затем столкнуться с проблемой, когда мне действительно нужно поддерживать другие языки. Я думаю, что в Java это можно было бы решить с помощью комплектов ресурсов - это то, что мне нужно.

Каков "рельсовый путь" решения этой проблемы? Заранее спасибо.

1 Ответ

1 голос
/ 17 октября 2010

Как насчет использования файла YAML с каждым представленным типом пользователя ... чтобы вы могли сделать что-то вроде этого (не проверял это, но общая идея может быть полезной):

config / language.yml: customer: product_name: Product client: product_name: Service
config / initializers / load_config.rb:
LANGUAGE = YAML.load_file ("# {RAILS_ROOT} /config/language.yml")

просмотр:
<% = LANGUAGE [user.type] .product_name%>

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