2012-04-10 46 views
9

我正在爲Heroku部署Rails 3.2應用程序。我根據https://devcenter.heroku.com/articles/rails3x-asset-pipeline-cedar在本地預編譯資產。爲什麼Heroku返回'devise/sessions.js沒有預編譯'?

但是我卻越來越

ActionView::Template::Error (devise/sessions.js isn't precompiled): 

有沒有其他人遇到過嗎?

什麼是確保設計javascripts的預先正確方法。

謝謝!

+0

你是雪松堆棧上? – sethvargo 2012-04-10 15:45:13

+0

嗨sethvargo。是的,我在雪松 – 2012-04-10 15:49:04

回答

6

謝謝你的所有建議。經過一番思考,我意識到問題在於如何配置應用程序以調用控制器特定的JavaScript。如果其他人遇到這個問題,這就是我所做的。

我已經通過在佈局文件中的以下代碼加載控制器專用的.js文件。

<%= javascript_include_tag "application", params[:controller] %> 

問題是,如果某個特定的cotroller.js文件不存在,則會失敗。在我的情況下,登錄頁面失敗,因爲我沒有創建一個設計/ sessions.js文件。

我可能已經創建了這個文件,但我覺得這是一個混亂的方法。我不喜歡有大量空文件躺在這裏的想法。

相反,我明確地認爲

<% javascript 'controller.js' %>  

調用特定的控制器的JavaScript中使用application_helpers以下幫手

def javascript(*files) 
    content_for(:head) { javascript_include_tag(*files) } 
end 

似乎是工作的罰款至今。

再次感謝您的建議。

+3

對於那些有興趣採用添加js文件的方法,您可以在app/assets/javascripts中創建'devise'文件夾,然後將'sessions.js'文件放在那裏。方便,如果你想看到登錄頁面。注意:您需要列出單獨訪問的資產:http://stackoverflow.com/questions/7425929/rails-3-1-strategy-for-pre-compiling-controller-specific-js-assets – brookr 2012-06-07 10:21:52

+0

非常感謝,這個是我一直在尋找幾個小時的答案! – 2013-11-03 23:38:53

3

嘗試運行rake assets:precompile


嘗試添加該到你的config /環境/ production.rb:

config.assets.precompile += %w(*.css *.js) 

或指定文件。

+0

嗨,賈斯汀D.我很感謝你的回答,非常感謝。這應該起作用了(如果我創建了必要的.js文件,那麼這個工作會有效),但是在一夜之間思考這個問題後,我意識到問題是由於我如何調用控制器特定的javascripts。我添加了一個答案來幫助其他可能遇到類似問題的人。 – 2012-04-11 01:49:39

5

我的解決辦法:

<%= javascript_include_tag "application", controller_name if controller_name != "sessions" %> 
相關問題