我正在使用我知道工作的模型(記錄存在於數據庫中,可以搜索並顯示在其他視圖等中),但是當我嘗試使用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.
你的'routes.rb'文件是什麼樣的?你有選舉對象的資源嗎? –
感謝您的回答! (補充一下,這個界面令我感到吃驚!)你的回覆表明我使用的控制器和:action的URL是以某種方式不正確的。我確實有一個路由URL:registration_loader_editVoter POST /registration_loader/editVoter(.:format){:controller =>「registration_loader」,:action =>「editVoter」}。 form_for是否默認發佈? – user1016759
增加資源:選民部分工作,但我不明白爲什麼,因爲沒有選民控制器。 Rails 3.1如何處理到不存在的控制器的路由? – user1016759