我怎样才能得到Rails.env.production的等价物?在application.js中

时间:2011-11-21 12:01:43

标签: javascript ruby-on-rails

我基本上只想在javascript中完成环境检查,所以我不必使用Rails.env.production丢弃我的视图文件?检查。

4 个答案:

答案 0 :(得分:15)

最简单的方法我认为是将javascript变量设置为Rails.env的值,然后在application.js中添加一个方法来检查它。最好的地方可能在你的布局中,所以app/views/layouts/my_layout.html.erb就像:

<script type="text/javascript">
  var rails_env = '<%= Rails.env %>';
</script>

然后您可以在javascript代码中使用它。

答案 1 :(得分:5)

我刚刚了解到将JS放在HTML文件中是一个糟糕的主意,原因很多,而且不应该这样做。

因此,解决这个问题的最佳方法是:

在您的视图(.erb)文件中:

<div id="RAILS_ENV_CONSTANT" style="display:none"><%= Rails.env %></div>

在application.js文件的顶部:

var RAILS_ENV = $('#RAILS_ENV_CONSTANT').text();

答案 2 :(得分:2)

我不喜欢引入新变量,即var rails_env = '<%= Rails.env %>',因为它会污染全局命名空间。所有JS文件都需要这个变量吗?或者所有JS功能?

我会使用类似于@Magne的东西,但我不是创建一个隐藏的div,而是将它应用于body标签:

<body data-rails-env="<%= Rails.env %>">

或者在HAML中(你正在使用HAML,对吧?!)

%body{ "data-rails-env" => Rails.env }

然后任何脚本都可以拿起它:

$("body").data("rails-env")

答案 3 :(得分:0)

你不能检查你的JS,因为JS不是服务器。最简单的方法是生成一个与环境有关的JS文件,包括它或从模板中创建一个变量