根据环境在Rails中加载不同的Javascript文件

时间:2015-03-23 10:37:56

标签: javascript ruby-on-rails asset-pipeline erb

在Rails 3.2中根据您的环境(生产或开发)加载不同的Javascript文件的最佳方法是什么?我正在尝试创建一个全局(是的,全局的)javascript变量,它应该根据环境而变化。该变量由JQuery调用,但是我编写的其他一些javascript文件也需要该变量。

最好是根据我们正在运行的环境生成一个动态的application.js.erb,还是我遗漏了什么?

由于

2 个答案:

答案 0 :(得分:4)

  

在Rails 3.2中根据您的环境(生产或开发)加载不同的JavaScript文件的最佳方法是什么?

在您的应用程序布局中,您可以添加如下环境特定的js文件:

<% if Rails.env.development? %>
  <%= javascript_include_tag 'development.js' %>
<% end %>

或更清洁的方式:

<% javascript_include_file "#{RAILS_ENV}.js" %>

您可以通过创建特定的js文件并在application.js.erb中要求它来以另一种方式获得相同的结果:

env_config.js.erb

<%= Rails.env.production? ? 'productionConf();' : 'regularConf();' %>

application.js.erb

//= require env_config
//= require jquery
...

答案 1 :(得分:3)

不是加载不同的js文件,而是根据不同的环境设置变量

我建议使用gon这是将rails变量转换为js的简单方法。

设置完成后,在控制器中执行以下操作:

before_filter :set_gon_env

def set_gon_env
  gon.rails_env = ENV['RAILS_ENV'] == 'development' ? "dev" : "not dev"
end