【问题标题】:Loading different Javascript files in Rails based on environment根据环境在 Rails 中加载不同的 Javascript 文件
【发布时间】:2015-03-23 10:37:56
【问题描述】:

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

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

谢谢

【问题讨论】:

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


    【解决方案1】:

    在 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
    ...
    

    【讨论】:

      【解决方案2】:

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

      我建议使用gon,它是一种将rails 变量导入js 的简单方法。

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

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

      【讨论】:

      • 使用gon 比其他解决方案更惯用。谢谢!
      猜你喜欢
      • 2012-11-01
      • 1970-01-01
      • 2020-08-17
      • 1970-01-01
      • 1970-01-01
      • 2012-03-28
      • 1970-01-01
      • 2020-08-30
      • 1970-01-01
      相关资源
      最近更新 更多