O.M.G. Apparentemente . . . posso!!! Non mi sarebbe mai venuto in mente che potessi metterlo lì e non tutto in alto nel template dove (almeno nella mia testa) viene renderizzato.
Ora vedo e capisco che digest_custom e che sta chiamando .html_safe, in modo pulito e ordinato, in codice che ho guardato e cercato di capire, ma è confusionario (per me) che stia usando quella sintassi senza parentesi. (O forse non l’avrei mai visto).
Beh, vedo i valori nelle localizzazioni, ma rispetto alla sovrascrittura del template come stavo facendo prima, questa è una soluzione molto meno rischiosa.
Grazie mille per avermi messo sulla strada giusta!
Ecco un’altra cosa che sto facendo che mi sembra sciocca. Il mio digest_custom_html ha bisogno dell’utente per cui viene renderizzato, quindi quello che sto facendo è sovrascrivere digest per impostare @user in modo che il mio digets_custom_html possa avere accesso all’utente per cui è il digest. C’è un modo super facile per evitare di farlo?
after_initialize do
# Codice che dovrebbe essere eseguito dopo che Rails ha finito di avviarsi
# 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