我基本上只想在javascript中完成环境检查,所以我不必使用Rails.env.production丢弃我的视图文件?检查。
答案 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文件,包括它或从模板中创建一个变量