我正在構建一個ToDo應用程序,試圖獲得流利的Rails。我的應用中有四個級別的層次結構。使用form_for與嵌套資源
- 用戶
- 目標(每個用戶的多個目標)
- 任務(每個目標多任務)
- 子任務(每個任務的多個子任務)
我有一個工作的前端形式對於每個使用嵌套資源的應用程序。我的routes.rb有這樣的事情
resources :goal do
resources :task do
resources :subtask
end
end
我想現在要做的是,有所有這些形式的用戶控制器的一個觀點正確。
這是我試圖創建表格:
<%= form_for @task, url: {controller: 'task', action: 'create'} do |f| %>
<%= f.label :description %>
<%= f.text_field :description %>
<%= f.submit "Add Goal", class: "btn" %>
<% end %>
但我最終得到這個錯誤
No route matches {:action=>"create", :controller=>"task", :id=>"1"}
的:ID => 1對應於用戶頁面我在( http://localhost:3000/user/1)
我的理解是,我沒有提供此步驟的目標goal_id。不知道如何實現這一點。
我注意到的另一件事是,對rake routes
的響應顯示了很多URI路徑,但對POST方法沒有任何影響。它不允許我使用url:
的form_for
中的路徑,因爲它與POST方法不匹配。
所以我的問題是:
- 如何路由的form_for,當你有嵌套的資源?
- 如何在使用form_for時提供父資源的ID,以便我的創建操作正確路由?
大概這將給你一些想法:HTTP://計算器.com/questions/2034700/form-for-with-nested-resources – dp7
執行rake路由並檢查創建任務路由。用戶ID可能不會被指示爲:id。 – Syl
不,我有'/ goal /:goal_id/task'作爲創建任務路線。是的,在這條路線上沒有:id,我仍然需要在某處提供:goal_id,我不知道如何去做(正如我在問題中提到的那樣)。 –