Skip to content

Instantly share code, notes, and snippets.

@yamitake
Last active April 12, 2025 03:23
Show Gist options
  • Save yamitake/5f568381785661b3e7b1e6bffb824da8 to your computer and use it in GitHub Desktop.
Save yamitake/5f568381785661b3e7b1e6bffb824da8 to your computer and use it in GitHub Desktop.
Rails用Google Tag Manager ViewHelper
module GtmHelper
GTM_SCRIPT = "(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':" \
"new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0]," \
"j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=" \
"'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);" \
"})(window,document,'script','dataLayer','%s');".freeze
GTM_IFRAME_URL = "https://www.googletagmanager.com/ns.html?id=%s".freeze
def gtm_key = @gtm_key ||= Rails.application.config_for(:gtm)["key"] || "SET_GTM_KEY"
def render_gtm_head = tag.script(GTM_SCRIPT % gtm_key, escape: false)
def render_gtm_body = tag.noscript(tag.iframe(nil, src: GTM_IFRAME_URL % gtm_key, height: 0, width: 0, style: "display:none;visibility:hidden"))
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment