提问人:antun 提问时间:12/27/2012 更新时间:2/15/2017 访问量:4565
javascript_include_tag :d efaults 不起作用
javascript_include_tag :defaults does not work
问:
我正在将应用程序迁移到 Rails 3。以下 - 我在一些地方看到推荐 - 不起作用:
<%= javascript_include_tag :defaults %>
就我而言,它扩展到以下方面:
<script src="/assets/defaults.js" type="text/javascript"></script>
...结果为 404。据我了解,:d efaults 不应该包含一个名为“defaults.js”的文件;它应该包括一些基本的东西,如原型.js和application.js。
请注意,就我而言,以下工作正常。只是如果可能的话,我宁愿使用官方推荐的方式:
<%= javascript_include_tag :prototype %>
<%= javascript_include_tag :application %>
我正在使用 ruby 1.9.3 运行 Rails 3.2.8。
我的config / application.rb中没有以下行(以任何形式)。为了迁移到 Rails 3,我创建了一个新的 Rails 3 应用程序,并使用该 application.rb 作为起点:
config.action_view.javascript_expansions[:defaults] = %w(foo.js bar.js)
在app/assets/javascripts中,我有:
Util.js
application.js
controls.js
dragdrop.js
effects.js
prototype.js
...以及一堆特定于我的应用程序的东西。
答:
从 Rails 3.1 开始,它使用资产管道。这意味着您需要改变资产管理。
您有一个包含如下内容的文件:assets/javascripts/application.rb
//= require jquery
//= require jquery_ujs
//= require_tree .
似乎您在 javascripts 存储库中包含 jquery、jquery_ujs 和所有其他文件。使用最后一行,您无需在此文件中执行任何其他操作。你只需要在视图中包含应用程序文件,rails 就会管理一切:
<%= javascript_include_tag "application" %>
这与样式表完全相同。
然后在生产环境中,资产(图像、样式表、javascript)将被编译和缩小,以提高效率。
我建议你在这里阅读更多关于这里的信息
希望这会有所帮助
评论
以下是有关 Asset Pipeline 的更多信息 - http://guides.rubyonrails.org/asset_pipeline.html
它旨在更轻松地将 Javascript 分解为单独的文件进行开发,同时在生产中编译和最小化它们。
评论