2011-06-27 128 views
17

當前正在開發一個項目,並且遇到了我以前從未遇到過的問題。目前正在做一個登錄註冊頁面,要求用戶註冊。我之前有一個未定義的方法`name'error,然後意識到該方法不稱爲名稱,它被稱爲full_name。我瀏覽了所有的文件夾,以確保任何方法或屬性不被稱爲「名稱」並將其重命名爲「full_name」。刷新瀏覽器後,我收到了以前沒有看到的以下錯誤。有些人可以解釋一下這個錯誤是什麼,我可能會解決這個問題。模板丟失

模板丟失

缺少模板用戶/與 {創建:處理程序=> [:ERB,:RJS,:助洗劑, :RHTML,:RXML]:格式=> [:HTML ], :鑑於路徑烯]} 語言環境=> [::EN, 「C:/用戶/ patterd /文件/項目/應用程序/意見」

回答

42

如果不重定向該錯誤發生在您的控制器的create方法中。

您是否在控制器的create方法中重定向或呈現新表單,以防錯誤?

如果在控制器的create方法中沒有重定向,則需要創建一個名爲create.html.erb的新文件。通常情況下,成功創建後,你重定向到如下所示的其他頁面

def create 
    # some object you want to create 
    # if the object.save is fine 
    # redirect_to object 
    # else 
    # render new with the errors 
    # end 
end 
+0

我有一個user_Controller,並且確實包含一個create方法。其中 'code'def創建 @user = User.new(params [:user]) if @ user.save #處理成功保存。 否則 @title =「註冊」 呈現「新」 結束 結束 – David

+3

OK.after保存,redirect_to的一些頁面,例如重定向:動作=>:節目,使之轉到頁之一你有.html.erb擴展名。通常它會是index.html.erb(redirect_to:action =>:index)或show.html.erb(redirect_to:action =>:show) – felix

+0

哦,沒關係。我明白爲什麼我收到這個錯誤。非常感謝。 – David

19

在我的情況下,我不得不處理並呈現無視圖。

def return_payment 
    # do lots of stuff 

    head :ok 
end 
+0

這也可以工作 – David

2

我有同樣的問題,究其原因是,我不小心留下空的其他「創造」的方法:)

2

- 當你沒有觀點,方法的文件通常缺少模板錯誤發生時 的控制器,或 - 如果方法僅用於沒有任何視圖文件的計算,則必須呈現/重定向該方法。

如果您不渲染或重定向該方法,它將搜索當前方法名稱的視圖頁面(在您的情況下它將搜索create.html.erb)。因此,您必須渲染/重定向方法。

0

我有同樣的問題,只是添加了redirect_to,它的工作!

def update 
    @visitor = Visitor.find(params[:id]) 
    if @visitor.update_attributes(visitor_params) 
     flash[:notice] = "Update ok!" 
     redirect_to root_path #just added this line and it worked! 
    else 
     render 'edit' 
    end 
end