我希望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>在Rails3中实现它是可能的吗?
致敬,阿列克谢·扎哈罗夫
发布于 2010-09-15 02:16:18
您可以使用助手方法加载您的js,并执行条件检查,以确定它是哪种环境。
app/views/layout/application.html.*(通常包含javascript的地方)
load_javascriptapp/helpers/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,这样可以让它变得更加枯燥。
发布于 2011-04-07 08:50:52
至少在Rails3中,您可以向javascript_include_tag助手传递符号:defaults,该符号是在配置/应用程序.rb中的变量config.action_view.javascript_expansions:defaults =
这将在当前被注释掉,并且至少将始终包括application.js。
如果您想为生产和开发定义一组不同的默认值,那么将该行注释掉,并打开config/environment/production.rb和config/environment/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)https://stackoverflow.com/questions/3711596
复制相似问题