2011-12-11 73 views
2

在我的紅寶石,我有任務的以下edit.html.erb文件:Ruby on Rails的的form_for on Rails的代碼導致錯誤的路徑

<%= render 'form' %> 

然後我有以下在同一個目錄中的_form模板代碼:

<%= form_for @task do |f| %> 
    <%= fl.label :title %><br /> 
<% end %> 

問題是我試圖導航到編輯頁面時出現錯誤。該錯誤說「未定義的task_path」,所以從我可以告訴Rails沒有正確識別我的任務的路徑。

程序結構的方式是我有一個List,其中包含許多任務,每個任務都有一個列表。路由文件聲明這樣的結構:

resources :lists do 
    resources :tasks 
end 

我如何獲得的form_for,以確定我想在/列表/編輯任務:LIST_ID /任務/:TASK_ID /編輯?

謝謝你的幫助!

回答

6

您正在使用Nested Resources在表單中使用該方法的正確方法是指定父級。

<%= form_for [@list, @task] do |f| %> 
    <%= f.label :title %><br /> 
<% end %> 
+1

只是注意的人誰發現這一點,像我一樣,找一個嵌套的資源_which幫助有一個名爲route_:Rails可以不從數組推斷窗體的URL,所以你需要指定該URL明確地表示爲'form_for(@task,url:my_custom_named_list_task_path(@list))''。按照:http://stackoverflow.com/questions/1159107/rails-nested-resource-issue – Leo