我已经阅读并尝试了这里的解决方案(Ruby On Rails 3.1 - 资产管道 - 资产渲染两次),但它不适用于我的场景,如下所示:
布局:
<!DOCTYPE html>
<html>
<head>...</head>
<body>
...
<!-- including :application -->
<%= javascript_include_tag :application %>
<!-- yielding :body_script -->
<%= yield :body_script %>
</body>
</html>
然后,在“用户”视图中:
<%= content_for :body_script do %>
<%= javascript_include_tag 'users' %>
<% end %>
...
...
...
我的 javascript 依赖项是:
- application.js “需要” jquery、bootstrap 和 self
- users.js “需要” worker_interface.js
- worker_interface.js “需要” jquery、淘汰赛和应用程序
当“用户”视图被渲染时,我在 body 的末尾得到了重复的 jquery 和 application.js,其中一个是因为 被渲染的,javascript_include_tag :application
另一个是因为 被渲染的yield :body_script
,就像这样:
<!-- including :application -->
<script src="/assets/jquery.js?body=1" type="text/javascript"></script>
<script src="/assets/bootstrap.js?body=1" type="text/javascript"></script>
<script src="/assets/application.js?body=1" type="text/javascript"></script>
<!-- yielding :body_script -->
<script src="/assets/jquery.js?body=1" type="text/javascript"></script>
<script src="/assets/knockout.js?body=1" type="text/javascript"></script>
<script src="/assets/application.js?body=1" type="text/javascript"></script>
<script src="/assets/worker_interface.js?body=1" type="text/javascript"></script>
<script src="/assets/users.js?body=1" type="text/javascript"></script>
我知道我在这里有多余的依赖项,因为我要求不止一次(间接地)包含 jquery 和应用程序。但是,Rails 不应该保证不会呈现重复的文件吗?我仍然可以保留“冗余”依赖项并且只渲染一次文件吗吗?
顺便说一句,我使用的是 Rails 版本 3.2.9。