#ruby-on-rails #ruby #ruby-on-rails-3
#ruby-on-rails #ruby #ruby-on-rails-3
Вопрос:
У меня много повторяющихся флэш-уведомлений по всему моему приложению rails 3, и в конечном итоге я снова и снова набираю одни и те же строки. Кроме того, я хочу удалить длинные строки для флэш-уведомлений за пределами контроллеров.
Я пытался поместить их во внешний файл, но я не могу получить доступ к переменным экземпляра…
Я разместил код здесь:http://pastebin.mozilla.org/1201689
У кого-нибудь есть какие-нибудь идеи?
Действительно ценю любую помощь 🙂
Ответ №1:
Подобные задачи разработаны для i18n (интернационализация). Взгляните на раздел 3 в http://guides.rubyonrails.org/i18n.html Для их хранения используется файл, но вы можете изменить его в зависимости от языка. Это демонстрирует именно то, что вы ищете. Даже если вы используете только 1 язык, это удалит дублирующийся код для часто используемых строк.
Другой вариант — создать модуль в папке вашего приложения / библиотеки, который определяет ваши константы.
module FlashNoticeConstants
MY_COMMONLY_USED_FIRST = "test"
MY_COMMONLY_USED_SECOND = "test2"
end
Комментарии:
1. Спасибо за ответ, Газлер. Есть ли какая-либо альтернатива библиотеке i18n, может быть, это немного излишне для того, что я пытаюсь сделать …???
2. Я действительно не думаю, что это перебор. Здесь хранятся все нужные вам строки в файле, как вы и просили. Вы могли бы сделать это вручную, но ваш результат в конечном итоге был бы очень похож на решение i18n.
3. Хорошо, я просматривал библиотеку INTL, и кажется, что это, вероятно, сработает. Спасибо за предупреждение. Я также рассмотрю модули, действительно хотел сделать это только с классами ruby.
4. Действительно ценю предупреждение Глейзера… IYO было бы лучшим способом вернуть переменные из внешних файлов обратно в основные контроллеры, если бы модули избегали использования библиотеки INTL lib? Спасибо 🙂
5. В случае отказа от решения i18n я бы выбрал модульный подход.