Plateformes

Comment ajouter un bandeau cookies à une application Ruby on Rails

Dans Rails, collez la balise dans le head d’app/views/layouts/application.html.erb, au-dessus de javascript_importmap_tags ou javascript_include_tag, pour qu’elle s’exécute avant votre JavaScript sur chaque page. Marquez les balises de suivi dans le même layout avec type="text/plain" et data-cq-category. Turbo Drive ne demande aucun code supplémentaire : le bandeau reste en place d’une visite à l’autre.
Publié le 21 octobre 2026 · Par l’équipe Cookiequiet

Étapes

Copier la baliseDans le tableau de bord Cookiequiet, ajoutez le site et copiez la balise avec votre clé de site, data-consent-mode="1" et data-auto-block="1".
La coller dans le layout de l’applicationOuvrez app/views/layouts/application.html.erb et collez la balise dans le head, au-dessus de javascript_importmap_tags ou javascript_include_tag et de tout autre script.
Marquer vos balisesCollez les balises de mesure d’audience et de publicité sous la balise Cookiequiet, avec type="text/plain" et data-cq-category réglé sur analytics ou marketing.
Envoyer les pages vues lors des visites TurboSi votre outil de mesure a besoin d’une page vue par visite, envoyez-la depuis un écouteur turbo:load, seulement quand l’événement cq:consent a accordé la mesure d’audience.
Autoriser l’origine dans votre CSPSi config/initializers/content_security_policy.rb définit une politique, ajoutez https://cookiequiet.com à script_src et connect_src.
Ajouter le lien Préférences de cookiesDans le partial du pied de page, ajoutez une ancre ordinaire avec href="#cq-preferences", data-cq-show-preferences et data-turbo="false".
Tester avec Tout refuserOuvrez l’application dans une fenêtre de navigation privée, cliquez sur Tout refuser et vérifiez que seuls cq_consent et le cookie de session sont déposés. Acceptez tout, rechargez, suivez quelques liens et consultez le registre des consentements.

Où placer la balise dans Rails ?

Rails rend chaque vue dans un layout, app/views/layouts/application.html.erb par défaut. Collez la balise dans son head, au-dessus des balises qui chargent votre JavaScript (javascript_importmap_tags avec importmap-rails, javascript_include_tag avec jsbundling-rails) :

erb
<!DOCTYPE html>
<html>
<head>
<title><%= content_for(:title) || "My app" %></title>
<meta name="viewport" content="width=device-width,initial-scale=1">
<%= csrf_meta_tags %>
<%= csp_meta_tag %>
<script src="https://cookiequiet.com/cq.js" data-site="YOUR_SITE_KEY" data-consent-mode="1" data-auto-block="1" defer></script>
<%= stylesheet_link_tag "application", "data-turbo-track": "reload" %>
<%= javascript_importmap_tags %>
</head>
<body>
<%= yield %>
</body>
</html>

La clé de site est publique (elle apparaît dans chaque page) : l’écrire dans le layout ne pose donc pas de problème. S’il existe d’autres layouts, par exemple pour les mailers ou une zone d’administration, n’ajoutez la balise qu’à ceux que voient les visiteurs.

Comment bloquer mes balises jusqu’au consentement ?

Collez les balises de suivi sous la balise Cookiequiet et modifiez leur balise d’ouverture :

html
<script type="text/plain" data-cq-category="marketing">
/* code de base du pixel Meta, inchangé */
</script>

Cookiequiet exécute les balises marquées quand la catégorie est accordée, et d’emblée lors des visites suivantes où le choix enregistré l’inclut. Le guide Meta Pixel montre le code de base complet, et le guide Google Analytics 4 la balise Google avec son alternative en Consent Mode. Pour ne les imprimer qu’en production, entourez-les de <% if Rails.env.production? %>. Les scripts que votre JavaScript ou une bibliothèque crée à l’exécution sont retenus par le bloqueur automatique quand ils viennent de l’un des quelque 80 traceurs qu’il connaît.

Qu’est-ce qui change avec Turbo Drive ?

Turbo Drive, activé par défaut dans les nouvelles applications Rails, transforme les clics sur les liens en requêtes fetch. Le manuel de Turbo indique qu’il remplace le body par celui de la nouvelle page et fusionne les heads, et qu’un script du head ne s’exécute que la première fois qu’il apparaît. Trois conséquences :

  • La balise s’exécute une fois par chargement complet et le choix enregistré reste appliqué d’une visite à l’autre.
  • Les balises marquées ont leur place dans le head. Cookiequiet les active au chargement et après chaque choix, pas à chaque visite Turbo.
  • Le conteneur du bandeau est ajouté au body, que Turbo remplace. Cookiequiet le replace dans le nouveau body : un bandeau en attente de réponse, le bouton des préférences et showPreferences() continuent donc de fonctionner sans code supplémentaire.

Pour le code qui s’exécute à chaque page, comme les pages vues, Turbo déclenche turbo:load après le premier chargement et après chaque visite ; envoyez-y la page vue seulement quand l’événement cq:consent que Cookiequiet émet sur window a accordé la mesure d’audience.

Comment autoriser Cookiequiet dans la Content Security Policy ?

Rails définit la politique dans config/initializers/content_security_policy.rb. Ajoutez l’origine aux deux directives dont le bandeau a besoin :

ruby
Rails.application.configure do
config.content_security_policy do |policy|
policy.script_src :self, "https://cookiequiet.com"
policy.connect_src :self, "https://cookiequiet.com"
end
end

script-src charge cq.js ; connect-src couvre la configuration, la géolocalisation et les enregistrements de consentement. Si la politique utilise des nonces, donnez aux scripts inline marqués nonce="<%= content_security_policy_nonce %>" : Cookiequiet copie le nonce sur le script qu’il exécute après le consentement, et la politique le laisse donc passer.

Comment ajouter le lien Préférences de cookies ?

html
<a href="#cq-preferences" data-cq-show-preferences data-turbo="false">Cookie preferences</a>

Cookiequiet gère le clic et ouvre le centre de préférences ; data-turbo="false" empêche Turbo de le traiter comme une visite.

Comment tester ?

  1. Lancez bin/rails server ou bin/dev, ouvrez l’application dans une fenêtre de navigation privée et affichez le code source : cq.js vient avant votre JavaScript.
  2. Cliquez sur Tout refuser. Les cookies sont cq_consent et le cookie de session que dépose Rails (nommé d’après l’application, par exemple _myapp_session), qui est strictement nécessaire.
  3. Effacez les cookies, rechargez, et suivez un lien avant de choisir : le bandeau reste visible.
  4. Cliquez sur Tout accepter, rechargez : les balises marquées s’exécutent.
  5. Consultez le registre des consentements dans le tableau de bord.

Il n’y a aucune gem à installer. Cookiequiet est gratuit pour un site, ciblage géographique compris ; Starter coûte 3 € par site et par mois, avec des pages vues illimitées.

Questions

Non. Le bandeau est une balise script dans le layout de l’application, sans gem, sans pin d’importmap et sans paquet npm. L’épingler dans l’importmap ferait d’ailleurs perdre les attributs data dans lesquels il lit ses réglages.
Oui. Turbo Drive remplace le body à chaque visite, et le conteneur du bandeau vit dans le body : Cookiequiet le replace donc dans le nouveau body. Le bandeau reste jusqu’à ce que le visiteur choisisse, et le bouton des préférences continue de fonctionner.
Le cookie de session maintient la session du visiteur et, avec elle, la protection contre la falsification de requêtes intersites : il est donc strictement nécessaire dans la plupart des lectures des règles ePrivacy. Listez-le comme nécessaire dans le tableau des cookies.
Une application en mode API ne rend aucune page HTML : la balise va donc dans le front-end qui en rend. Suivez le guide React ou Vue pour une application monopage servie séparément.

Mettez un bandeau discret sur votre site dès aujourd’hui

Gratuit pour un site avec toutes les fonctions essentielles, sans carte ni période d’essai qui expire. Passez un site en Starter pour €3 par mois pour le mettre à vos couleurs par IA sans la mention Cookiequiet, ou en Pro pour €9 pour le concevoir avec l’agent IA.