• [^] # Re: des références monsieur !

    Posté par (site web personnel, Mastodon) . En réponse à l’entrée du suivi Mettre plus en avant le bandeau "Faites vivre LinuxFr". Évalué à 2 (+0/-0). Dernière modification le 30 juillet 2020 à 23:02.

    Hello,

    A ce sujet, j'ai regardé comment était faite les pages "sites amis", "team", "changelog"... Elles sont toutes crées à partir du static_controller.

    Elles utilisent le static_helper pour remplacer à la volée les balises du style {{friends_list}} par du code HTML dynamique.

    J'ai essayé de faire une balise {{incitation}} pour pouvoir l'utiliser sur la page d'accueil et dans la bannière en même temps, mais ça ne marche malheureusement pas pour les bannières.

    En fait, pour le faire marcher, je dois appliquer cette modification sur banner.rb:

    class Banner < ActiveRecord::Base
     scope :active, -> { where(active: true) }
     validates :title, presence: { message: "Le titre ne peut être vide" },
     length: { maximum: 255, message: "Le titre est trop long" }
     validates :content, presence: { message: "La bannière ne peut être vide" }
    [...]
     def content
    - read_attribute(:content).to_s.html_safe
    + read_attribute(:content).to_s
     end
    end

    J'ai besoin de faire ça parce que le static_helper utilise la méthode gsub qui pose problème avec les ActiveSupport::SafeBuffer (je crois que j'ai ce problème).

    Je ne suis pas assez expert en Ruby, mais j'ai un peu peur que ça ouvre des failles de type cross-scripting. Bon, d'un autre côté, seul les admins peuvent éditer le code des bannières, donc peut être que l'on peut faire ce changement. Je ne sais pas 🤷