3

我正在使用Rails 3.2.8。當應用程序被部署的接入認爲是包括一個javascript:問題與JavaScript包括Rails應用程序

<%= javascript_include_tag "epiceditor" %> 

Heroku的失敗,此日誌:

ActionView::Template::Error (/app/app/assets/javascripts/epiceditor.js.erb has already been required 

我查了一些可能的解決方案,如檢查可能引發的任何參考一個循環依賴,或者只是在它被包含在其他地方的情況下將其刪除,而不是。所以,如果我包含它,我會得到這個「已經包含錯誤」,如果我沒有,那麼該文件根本不包括在內。

我的config/application.rg有這個

config.assets.initialize_on_precompile = false 

而且applications.js有這樣的:

//= require jquery 
//= require jquery_ujs 
//= require tabs 

值得注意的是,標籤被引用的文件是「epiceditor這可能是非常重要的。 js.erb「,因爲它具有我需要的一些嵌入式Rails代碼。

感謝您的幫助

編輯:

我相信這是鏈輪的錯誤。如果我更新Rails到3.2.9rc2,錯誤現在是這樣的: ActionView :: Template :: Error(資產邏輯路徑沒有擴展名:epiceditor/.js

但當然在epiceitor中的擴展是epiceditor.js .erb,我已經試過在javascript_include_tag顯式說明它。

+0

你說Heroku失敗;我認爲它在開發中起作用? –

+0

是的,它在開發環境中工作。在Heroku生產失敗。 – alvatar

+0

可以肯定的是,當您說它在開發中工作時,文件是否包含在您的HTML中,或者是正在加載的頁面沒有錯誤?看看你的application.js文件中有什麼,epiceditor.js.erb文件將不會被加載,除非你專門調用它:require epiceditor,或者除非你在文件夾中的其餘文件中加載:require樹,(我認爲這是正確的語法 - 我剛剛從內存中寫入)。 – Pete

回答

3

我發現的bug。 事實證明,在.js.erb文件中我打電話

<% asset_path 'epiceditor/' %> 

它應該擴展到放置所有epiceditor文件的路徑,而實際上是在recursiv中加載文件本身電子方式。這在開發環境中適當擴展,但不適用於生產環境。好笑,對吧? 原因是這是添加一個摘要。所以我用這個固定了整個問題:

<%= asset_path 'epiceditor/', :digest => false %> 

現在它確實展開到目錄,並且不落入遞歸陷阱。

希望這可以節省一些時間給別人!