2011-10-27 123 views
0

我正在使用我知道工作的模型(記錄存在於數據庫中,可以搜索並顯示在其他視圖等中),但是當我嘗試使用form_for標記以產生一視圖,用於編輯這些記錄中的一個,我得到的錯誤消息:Rails 3.1 form_for缺少方法

顯示/var/www/caucus/app/views/registration_loader/checkIn.html.erb其中行#13提出:

undefined method `voter_path' for #<#<Class:0x98cabdc>:0x98c8878> 

提取的源(圍繞線#13):

10: </div> 
11: 
12: <%= form_for(
13:  @voter, 
14:  { :controller => "registration_loader", 
15:  :action  => "editVoter" 
16:  }) do |f| %> 

@voter是指檢索到的選民對象:

# Get the voter. 
@voter = Voter.where([ "voter_id = ?", @voterId ])[ 0 ] 
if not @voter 
    flash[ :error ] = "NO VOTER!" 
    redirect_to :action => 'search' 
elsif not @voter.kind_of?(Voter) 
    flash[ :error ] = "NO VOTER RECORD! (#{@voter.class.to_s})" 
    redirect_to :action => 'search' 
end 

當我改變@voter:voter,停止給我的錯誤,但不與我想要的記錄中的數據填充我的視場編輯。

根據Rails 3.1 API指南,將模型對象傳遞到form_for應該生成允許我編輯該對象中的數據的代碼,但顯然缺少一個輔助方法(voter_path)。這個voter_path方法應該在哪裏定義,它的正確語義和簽名是什麼?文檔中沒有任何地方討論創建這樣的方法,我也找不到編寫這種方法的任何示例。

*_path方法是否應該自動生成?如果沒有,有人可以指向指定此方法的語法和語義的文檔嗎?

感謝, 約翰S.

+0

你的'routes.rb'文件是什麼樣的?你有選舉對象的資源嗎? –

+0

感謝您的回答! (補充一下,這個界面令我感到吃驚!)你的回覆表明我使用的控制器和:action的URL是以某種方式不正確的。我確實有一個路由URL:registration_loader_editVoter POST /registration_loader/editVoter(.:format){:controller =>「registration_loader」,:action =>「editVoter」}。 form_for是否默認發佈? – user1016759

+0

增加資源:選民部分工作,但我不明白爲什麼,因爲沒有選民控制器。 Rails 3.1如何處理到不存在的控制器的路由? – user1016759

回答

0

簡短的回答:不,除非的form_for你還設計代碼中使用「足智多謀控制器」使用。改用form_tag。添加資源:選民到路由創建路由到不存在的控制器。