Consentimiento de cookies para Ruby on Rails
El banner es una etiqueta en application.html.erb, antes de tu importmap o bundle. Se mantiene entre navegaciones de Turbo Drive, y los consentimientos que piden tus formularios se registran desde el controlador con una llamada HTTP, cada uno con su justificante firmado.
Configúralo con tu agente de IA
Conecta el servidor MCP de Croombit a tu editor o agente de código y pega esto. Crea el sitio, las categorías de cookies y el banner, y edita tu código.
Con Croombit: crea un sitio para este proyecto y mantén las categorías de cookies que trae. Escribe el texto del banner y publícalo. Crea una clave publicable de TEST para localhost:3000. Es una app Rails: añade la etiqueta de cmp.js con javascript_include_tag al principio del <head> de app/views/layouts/application.html.erb, con la clave de ENV["CROOMBIT_PUBLISHABLE_KEY"], permítela en nuestra CSP si la tenemos y registra la casilla de newsletter de nuestro controlador de alta con un POST a /v1/consent usando CROOMBIT_SECRET_KEY.El agente trabaja en TEST. Pasar a LIVE son dos pasos en la consola: verificar tu dominio y cambiar a una clave LIVE; consulta pasar a LIVE.
O a mano
1. Añade la etiqueta al layout
data: { tc_api_key: … } se renderiza como data-tc-api-key. Usa pk_test_… en desarrollo y pk_live_… en producción.
<%# app/views/layouts/application.html.erb %>
<head>
<meta charset="utf-8">
<%= javascript_include_tag "https://croombit.com/cmp.js",
data: { tc_api_key: ENV.fetch("CROOMBIT_PUBLISHABLE_KEY") } %>
<%= csrf_meta_tags %>
<%# …everything else after it %>
<%= javascript_importmap_tags %>
</head>2. Permítela en tu CSP
# config/initializers/content_security_policy.rb — only if you enabled a CSP
Rails.application.configure do
config.content_security_policy do |policy|
policy.script_src :self, "https://croombit.com"
policy.connect_src :self, "https://api.croombit.com"
end
end3. Retén los rastreadores
Etiquetas en tus vistas: type="text/plain" más data-tc-consent. En una visita de Turbo, los scripts etiquetados de la página nueva se ejecutan en cuanto se acepta su categoría.
<script type="text/plain" data-tc-consent="analytics" async
src="https://www.googletagmanager.com/gtag/js?id=G-XXXX"></script>
<script type="text/plain" data-tc-consent="analytics">
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-XXXX');
</script>4. Registra consentimientos desde el controlador
Un POST /v1/consent normal con tu clave secreta. La cabecera Idempotency-Key hace que reintentar sea seguro. Consulta Registrar y consultar consentimiento.
require "net/http"
# e.g. in the controller that handles your signup form
uri = URI("https://api.croombit.com/v1/consent")
req = Net::HTTP::Post.new(uri,
"Authorization" => "Bearer #{ENV.fetch('CROOMBIT_SECRET_KEY')}",
"Content-Type" => "application/json",
"Idempotency-Key" => SecureRandom.uuid)
req.body = {
subject: "email:#{user.email}",
purpose: "newsletter",
state: params[:newsletter] == "1" ? "GRANTED" : "DENIED",
channel: "signup_form"
}.to_json
res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |http| http.request(req) }
raise "Croombit: #{res.code} #{res.body}" unless res.is_a?(Net::HTTPSuccess)Preguntas
¿Funciona con Turbo Drive?
Sí. Turbo sustituye el cuerpo de la página en cada visita; el banner y el botón flotante se mantienen, y la decisión vale para todas las páginas.
¿Funciona con Rails 6 y Webpacker?
Sí. Deja la etiqueta la primera del <head>, antes de javascript_pack_tag.
Relacionado
- Consentimiento de cookies para cualquier web
- Consentimiento de cookies para Next.js
- Consentimiento de cookies para React
- Consentimiento de cookies para Vue y Nuxt
- Consentimiento de cookies para Astro
- Consentimiento de cookies para SvelteKit
- Consentimiento de cookies para React Router y Remix
- Consentimiento de cookies para Laravel
- Consentimiento de cookies para Django
- Consentimiento de cookies para WordPress
- Consentimiento de cookies para Webflow
- Consentimiento de cookies para Framer
- Consentimiento de cookies para Hugo y Jekyll
- Guía: banner de cookies
- Consola: Cookies (escáner)
- TCF, Consent Mode y GPP
- Google Consent Mode v2: modo básico frente a avanzado