O.M.G. Aparentemente . . . ¡¡¡¡¡puedo!!! Nunca se me habría ocurrido que pudiera ponerlo ahí y no hasta arriba en la plantilla donde (al menos en mi cabeza) se renderiza.
Ahora veo y entiendo que digest_custom y que está llamando a .html_safe, muy bien, en código que miré y traté de entender, pero es confuso (para mí) que esté usando esa sintaxis sin paréntesis. (O tal vez nunca lo habría visto).
Bueno, veo los valores en las locales, pero en comparación con sobrescribir la plantilla como lo estaba haciendo antes, esta es una solución mucho menos arriesgada.
¡Muchas gracias por ponerme en el camino correcto!
Aquí hay otra cosa que estoy haciendo y que me parece tonta. Mi digest_custom_html necesita el usuario para el que se renderiza, así que lo que estoy haciendo es sobrescribir digest para establecer @user para que mi digets_custom_html pueda tener acceso al usuario para el que es el digest. ¿Hay alguna manera súper fácil de evitar hacer eso?
after_initialize do
# Código que debería ejecutarse después de que Rails haya terminado de arrancar
# 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