О боже! Оказывается . . . Я могу!!! Мне бы и в голову не пришло, что я могу разместить это там, а не в самом шаблоне, где (в моей голове, по крайней мере) оно рендерится.
Теперь я вижу и понимаю, что digest_custom вызывает .html_safe, как ни в чём не бывало, в коде, который я смотрел и пытался понять, но (для меня) сбивает с толку использование этого странного синтаксиса без скобок. (Или, возможно, я просто никогда бы его не заметил).
Что ж, я вижу значения в локалях, но по сравнению с перезаписью шаблона, как я делал раньше, это гораздо менее рискованное решение.
Огромное спасибо за то, что указали мне верный путь!
Вот ещё одна вещь, которую я делаю, и это кажется глупым. Моему digest_custom_html нужен пользователь, для которого он рендерится, поэтому я переопределяю digest, чтобы установить @user, чтобы мой digest_custom_html мог получить доступ к пользователю, для которого предназначен дайджест. Есть ли какой-то супер-простой способ избежать этого?
after_initialize do
# Код, который должен выполняться после завершения загрузки Rails
# require_relative "lib/discourse_add_jobs_to_digest/user_notifications_helper_override"
require_relative "lib/discourse_add_jobs_to_digest/engine"
require_relative "lib/discourse_add_jobs_to_digest/job_api"
require_dependency "user_notifications"
module ::UserNotificationsHelperOverride
def digest_custom_html(position_key)
if position_key == "above_footer"
DiscourseAddJobsToDigest::JobApi.get_jobs_html(@user).html_safe
else
super
end
end
end
UserNotificationsHelper.prepend(::UserNotificationsHelperOverride)
module ::UserNotificationsOverride
def digest(user, opts = {})
@user = user
super
end
end
UserNotifications.prepend(::UserNotificationsOverride)
end