2011-09-18 35 views
13

我有一個處理AJAX請求的創建操作。在我的開發機器上,成功處理名爲create.js.coffee的模板以生成JavaScript響應。但是,當我部署到Heroku時,應用程序會抱怨找不到該模板。Heroku需要配置什麼來處理基於CoffeeScript的模板?

ActionView::MissingTemplate (Missing template /expenses/create with {:handlers=>[:erb, :builder], :formats=>[:js, :html], :locale=>[:en, :en]}. Searched in: 
* "/app/app/views" 
* "/app" 
* "/" 
): 

很明顯,咖啡處理程序不在那裏預處理* .js.coffee模板。

任何人都可以建議如何配置Heroku來識別和處理這些模板?

注意: Heroku成功預處理了資產管道中存在的CoffeeScript文件。

+0

你有沒有得到答案?我在Heroku上遇到同樣的問題。我試着將以下內容添加到我的gemfile中: 'gem「coffeebeans」,:git => git://github.com/marcelloma/coffeebeans.git「,:ref =>」7b106「' 這是一個拉取請求到coffeebeans的寶石,允許.js.coffee在視圖中,這再次在當地工作,但不是在Heroku。 – trace

回答

36

我對晚會有點遲,但這裏是我的解決方案,發佈在Github上。


我只是碰到了在那裏我create.js.coffee文件在development工作的一個問題,但停在production工作(在Heroku)。該日誌顯示了Rails的甚至不是尋找一個咖啡處理器:

2011-10-14T08:26:29+00:00 app[web.1]: ActionView::MissingTemplate (Missing template page_blocks/create, application/create with {:handlers=>[:erb, :builder, :haml], :formats=>[:html, :text, :js, :css, :ics, :csv, :xml, :rss, :atom, :yaml, :multipart_form, :url_encoded_form, :json], :locale=>[:nl, :nl]}. Searched in: 
2011-10-14T08:26:29+00:00 app[web.1]: * "/app/app/views" 
2011-10-14T08:26:29+00:00 app[web.1]:): 

這是我的Gemfile的(重要)部分:

group :assets do 
    gem "sass-rails", "~> 3.1.0" 
    gem "coffee-rails", "~> 3.1.0" 
    gem "uglifier" 
    gem "compass", "~> 0.12.alpha" 
end 

# asset templates 
gem "jquery-rails" 
gem "haml" 

後,才搬到coffee-rails:assets組,事情開始奏效。也許這將是一個好主意,以某種方式在自述文件中明確說明這一點,甚至可以將coffee-rails插件放在assets組之外的Rails上。

+0

這對我來說完美,但不完全確定它爲什麼發生雖然。 –

+0

感謝讓,這真的很有幫助! – Abramodj

+1

我想upvote這個頁面上的所有內容。這讓我瘋狂! – webdesserts

2

我甚至後來的聚會,但我有同樣的問題,有一個簡單的解釋:

的「資產」組中的Gemfile寶石僅用於發展。 Heroku不會在生產中加載這些寶石,因爲它依靠其資產管道的穩定版本。

如果您使用的是與資產管道相關的特殊寶石,但實際上並不屬於標準管道(例如「coffeebeans」寶石),則應該在「Assets」組之外保留該寶石。

我剛剛測試了這個理論,它爲我工作。

0

在heroku雪松上,您需要根據本頁最後一節Rails 3.1+ Asset Pipeline on Heroku Cedar將路徑添加到路徑中。 「如果您需要在運行時編譯資源,則必須將bin添加到PATH以訪問JavaScript運行時。」

+1

我也需要這個功能,但是當我檢查我的Heroku配置時,PATH當前沒有設置,而不是像您在引用的文檔中那樣有多個值。你知道,如果這是正常的,並設置一個PATH,只是有/斌會做的伎倆? –

相關問題