Javascript 配置Rails以在开发和生产中使用不同的js

Javascript 配置Rails以在开发和生产中使用不同的js,javascript,ruby-on-rails-3,Javascript,Ruby On Rails 3,我希望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.co

我希望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

您可以让一个helper方法加载您的js,并对它所在的环境执行条件检查

app/views/layouts/application.html.*(通常包含javascript的位置)

app/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\u javascript
只返回一个文件列表,并且至少从Rails 3中只返回一个
javascript\u include\u标记来进一步干燥它,您可以向
javascript\u include\u标记
helper传递符号
:defaults
,该符号在变量config.action\u view.javascript\u expansions[:defaults]的config/application.rb中定义=

这将被注释掉,并且始终至少包括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)

另外,不需要添加.js,因此%w(jquerymyscripts)可以工作。
# 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)