我希望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中实现它?
此致 Alexey Zakharov
答案 0 :(得分:7)
至少从Rails 3开始,您可以将javascript_include_tag
帮助符号:defaults
传递给config / application.rb中的变量config.action_view.javascript_expansions [:defaults] = < / p>
目前这将被注释掉,并且至少包含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)
答案 1 :(得分:1)
你可以有一个辅助方法加载你的js并执行条件检查它是什么环境。
app / views / layouts / 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
来进一步干掉它。