2012-10-25 71 views
2

我試圖使用create.js.erb模板,位於/ app/views/users/ 但我得到以下錯誤:模板丟失(應用程序找不到.js.erb文件)

Template is missing 
Missing template users/create, application/create with {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder, :coffee]}. Searched in: * "/home/tim/fairym/app/views" 

我的控制器動作,我將它基於以下railscast: http://railscasts.com/episodes/381-jquery-file-upload

def create 
    @user = User.create(params[:user]) 
    end 

這裏有什麼問題嗎?

回答

1

爲什麼找不到模板的原因是,如果你在railscast情節注意到,他是做的script

$('#new_painting').fileupload 
    dataType: "script" 
數據類型的AJAX請求

因此,根據你如何做鏈接到創建操作鏈接可能需要呈現HTML格式。

Template is missing 
Missing template users/create, application/create with {:locale=>[:en], **:formats=>[:html]**, :handlers=>[:erb, :builder, :coffee]}. Searched in: * "/home/tim/fairym/app/views" 

您可以通過添加一個render js到你的行動解決這個問題,或者如果你正在做一個Ajax請求確保您的數據類型設置爲腳本。

+0

我在我的js.coffee文件中做了'script'的請求,但由於某種原因服務器撿起了它。它只在我添加了respond_to後才起作用。這很奇怪。 – TimmyOnRails

3

它不期待一個js文件。一個respond_to塊添加到您的方法:

def create 
    @user = User.create(params[:user]) 

    respond_to do |format| 
    format.js 
    # add more 'format' calls for any other formats this method should ever respond to. 
    end 
end 
2

我知道這已經回答了,但我有同樣的問題和錯誤信息,並通過在我的表單中添加「remote:true」來解決此問題。無論何時在表單上提交ajax調用,都需要這個。

我知道這一點對大多數人來說是顯而易見的,但對於像我這樣的新手來說,他們通常會忘記這些事情。

例如:

<%= form_for([@club, @club_order], remote: true) do |f| %> 

希望這有助於。