我讀過這裏(Ruby On Rails 3.1 - assets pipeline - assets rendered twice)嘗試過的解決方案,在Rails的重複資產的問題,但它不工作對我的情況下,它看起來像這樣:爲什麼Rails在使用yield時會重複資產?
佈局:
<!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,引導和自我
- users.js 「要求」 worker_interface.js
- worker_interface.js 「需要」 的jquery,敲除和應用
當 「用戶」視圖渲染,我越來越重複的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版本3.2.9。
你在application.js中使用'require_tree'嗎?人們告訴我,Rails足夠聰明,不會多次包含特定資產,但我已經看到完全相反的時間。資產管道可能是一件神祕的事情。另一件值得關注的事情是如果你有一些已經預編譯的資產。我注意到有時我的開發環境會加載非靜態和靜態資產,可能是一個配置設置。 – Noz 2013-02-19 17:04:13
嘿@Cyle,我沒有在任何地方使用require_tree。我用「config.serve_static_assets = false」禁用了靜態資源的服務:( – fegemo 2013-02-19 17:27:57
我假設sadface意味着它沒有工作;)。更改設置後,您是否重新啓動了服務器?如果您在本地進行測試,大多數現代瀏覽器都會緩存舊CSS。嘗試清除緩存。如果這沒有解決它,那麼我可以建議的唯一的其他事情是結算出這個SO http http:// stackoverflow中建議的空白行答案。com/questions/8558472/javascript-included-twice-in-a-rails-3-1-asset-based-app – Noz 2013-02-19 17:38:53