javascript - 通过 javascript 引用 ENV 变量

标签 javascript ruby-on-rails google-analytics environment-variables

我正在尝试设置 Google Analytics,并根据环境引用不同的跟踪 ID。我有一个沙盒版本的 Google Analytics(分析),它有一个 id,在临时环境中运行;还有一个生产版本的 Google Analytics(分析),有另一个 id,在生产环境中运行。

我将这些 id 设置为环境变量,目标是仅调用环境变量 ENV["GA_TRACKING_ID"] 在我的 javascript 文件中设置跟踪,并根据正在运行的环境自动设置 id。

但是,我不断收到ReferenceError:ENV未定义

更新:

class @GoogleAnalytics
  @load: ->
    window._gaq = []
    window._gaq.push ["_setAccount", GoogleAnalytics.analyticsId()]
    # other GA configuration

  @analyticsId: ->
    gon.ga_tracking_id

GoogleAnalytics.load()

并使用接受的答案的 gem 和 ApplicationController 代码:

class ApplicationController < ActionController::Base
  before_action :assign_env_variables

  def assign_env_variables
    gon.ga_tracking_id = ENV["GA_TRACKING_ID"]
  end
end

最佳答案

我真的很喜欢这个 gem,用于将后端变量传递给 Javascript:

https://github.com/gazay/gon

在您的 application_controller.rb 中,您可以添加一个 before_action 过滤器来运行一个方法,这意味着它将在每个页面上加载。使用 gon,您可以使用如下代码来分配变量:

class ApplicationController < ActionController::Base
  before_action :assign_env_variables

  def assign_env_variables
    gon.ga_tracking_id = ENV["GA_TRACKING_ID"]
  end
end

只要您在模板头中包含 gon 行(根据文档),您就可以在 JS 文件中的任何位置使用它来访问该变量:

gon.ga_tracking_id

关于javascript - 通过 javascript 引用 ENV 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30890416/

相关文章:

javascript - Angular : how to make a "search" take you to another route and display results?

javascript - RxJS Observable 轮询直到条件为 true

ruby-on-rails - Heroku Postgres : Make existing database follower

google-analytics - 如何为跟踪代码管理器代码正确匿名化 IP?

javascript - 发送每行表单的下拉值

javascript - 多个ajax倒数计时器的建议(每秒调用一次)

ruby-on-rails - 采摘多个连接表

ruby-on-rails - JBuilder 从 View 调用 to_builder

r - 将 Google Analytics 脚本添加到 R flexdashboard 中

google-analytics - Google 跟踪代码管理器 : gtm. dom 和 gtm.load 丢失