通过 javascript 引用 ENV 变量

Referring to an ENV variable through javascript

我正在尝试设置 Google 分析,并根据环境引用不同的跟踪 ID。我有一个 google analytics 的沙盒版本,它在暂存环境中有一个 ID 运行,而 Google Analytics 的生产版本在一个环境中有另一个 ID 运行生产环境。

我将这些 id 设置为环境变量,目标是调用环境变量 ENV["GA_TRACKING_ID"] 在我的 javascript 文件中设置跟踪,并自动设置基于哪个环境的id是运行.

然而,我不断收到 ReferenceError: ENV is not defined

更新:

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