2011-06-21 61 views
7

我正在使用由腳手架創建的默認代碼。我沒有改變任何東西。未定義的方法model_name

Showing app/views/presences/_form.html.erb where line #1 raised: 
undefined method `model_name' for NilClass:Class 

1: <%= form_for(@presence) do |f| %> 
2: <% if @presence.errors.any? %> 
3:  <div id="error_explanation"> 
4:  <h2><%= pluralize(@presence.errors.count, "error") %> prohibited this presence from being saved:</h2> 

這裏有什麼問題?我從來不會調用稱爲「model_name」的方法,並且此代碼是自動的,那麼爲什麼它不起作用?

感謝

回答

20

嘗試正在呈現形式new或其他相關的行動增加了此信息presences_controller

#presuming your model is called Presence 
@presence = Presence.new 
+2

謝謝,那是行得通的。我仍然試圖瞭解RoR是如何工作的,但這些錯誤信息並不是很有幫助。 – Bv202

+0

使用調用程序的綁定,以及更好的錯誤gem - 您在調試窗口中獲得控制檯。 –

5

的視圖(和的form_for方法)想到自己居然有一個真正的存在模型在@presence變量中。像這樣的@變量是從控制器傳遞過來的,這意味着你必須在控制器動作中設置它。

在「新」動作的情況下 - 您沒有現有的Presence對象(與「show」不同),因此您需要設置一個空白的新對象。

form_for方法將採用像這樣的Presence對象,並且:如果它是來自數據庫的現有對象,將創建正確的POST路由以更新它。但如果它是一個新的,空的,將創建一個新的創建正確的路線。

希望可以幫到...

相關問題