如何在rails app中的javascript文件中获取环境

dav*_*vid 12 javascript ruby-on-rails environment-variables

你好香港专业教育学院一直试图让当前的环境在轨道,但我认为我做了一些错误的我的JavaScript,但我似乎不知道什么.在我的application.js我有......

var rails_env = '<%= Rails.env -%>';
alert(rails_env);
alert(rails_env.value);
if(rails_env == 'development'){
    alert('inside if')
    var indexName = "idx";
}
else{
    alert('inside else')
     var indexName = "idx_production";
}
Run Code Online (Sandbox Code Playgroud)

即使我处于开发模式,它总是会进入我的声明.我究竟做错了什么?谢谢

如何在rails app中的javascript文件中获取环境

Mat*_*hew 41

你不需要直接将它传递到你的javascript文件中.您可以在erb视图文件中执行此操作,例如:

<script>
  window._rails_env = "<%= Rails.env %>"
</script>
Run Code Online (Sandbox Code Playgroud)

或更好的这个:

<%= javascript_tag do %>
  window._rails_env = "<%= Rails.env %>"
<% end %>
Run Code Online (Sandbox Code Playgroud)

或者最好的(恕我直言)这个:

<body data-env="<%= Rails.env %>">
  ...
Run Code Online (Sandbox Code Playgroud)

然后:

var railsEnv = $('body').data('env')
Run Code Online (Sandbox Code Playgroud)

  • `Rails.env`有时可以包含数据库凭证等自信信息. (4认同)

rjz*_*rjz 13

Rails的资产管道只会预处理您标记为解析的资产.无论这些资产是以CSS,JS还是其他方式结束,您都可以通过调整文件扩展名来标记文件以进行解析.

在这种情况下,当您尝试输出ERB变量时,您需要将文件的扩展名更改为application.js.erb.

有预处理器的扩展讨论这里.