Correzione di digest_custom_html per trattarlo come HTML (prima: Sovrascrittura di digest.html.erb)

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