2010-09-14 128 views
4

我希望Rails在开发和生产模式下注入不同的js文件。配置Rails在开发和生产中使用不同的js

例子:

发展:

<script src="/javascripts/jquery.js" type="text/javascript"></script> 
<script src="/javascripts/myscripts.js" type="text/javascript"></script> 

生产:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script> 
<script src="/javascripts/myscripts.min.js" type="text/javascript"></script> 

是否有可能实现它的Rails 3?

问候, 阿列克谢·扎哈罗夫

回答

1

你可以有一个辅助方法加载JS和它是环境进行健康检查。

应用程序/视图/布局/ application.html。*(无论你一般包括您的JavaScript)

load_javascript 

应用程序/佣工/ application_helper.rb

def load_javascript 
    if Rails.env.production? 
    javascript_include_tag 'js1', 'js2', :cache => true 
    else 
    javascript_include_tag 'js3', 'js4' 
    end 
end 

你可以干它了load_javascript只给你一个文件列表,并且只有一个javascript_include_tag

6

从至少导轨3,可以通过javascript_include_tag辅助其在可变config.action_view.javascript_expansions你的配置/ application.rb中内定义的符号:defaults [:默认] =

这将目前是注释掉并且总是至少包含application.js。

如果您想为生产和开发定义一组不同的默认值,请将此行注释掉并打开config/environments/production.rb和config/environments/development.rb。此处定义的任何设置都将覆盖application.rb中的任何设置,并仅应用于相关环境。对于你的例子,你会想要以下内容:

# development.rb 
config.action_view.javascript_expansions[:defaults] = %w(jquery.js myscripts.js) 

# production.rb 
config.action_view.javascript_expansions[:defaults] = %w(http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js myscripts.min.js) 
+2

此外,没有必要添加.js - 所以%w(jquery myscripts)将工作。 – Purplejacket 2011-08-31 15:26:10

相关问题