我有兩個資源,Clients
和Projects
。當循環嵌套資源時,Rails選擇錯誤路由
在routes.rb
:
resources :clients do
resources :projects
end
rake routes
給了我這個路由前綴client_project
爲projects#show
行動
在我看來,我呼籲:
<% @client.projects.each do |project| %>
<%= link_to project.name, project %>
<% end %>
和Rails不斷拋出一個錯誤:undefined method project_path
,這告訴我由於某種原因該視圖試圖呼叫project_path
而不是client_project_path
。我嘗試重新啓動我的服務器(甚至重新啓動計算機),似乎無法找到爲什麼它不會正確調用路由。我最近重構了我的路線(這導致了這個突破)。我在這裏錯過了什麼嗎?這個確切的模式適用於我的應用程序中的每一個其他模型,只有重構的路線沒有。
這很好。我從一個淺層資源重構,這將解釋這個問題。我將如何處理'edit_client_project_path'網址?使用'edit_client_project_path(screen)'會拋出一個錯誤「missing required keys:[:id]」 –
嘗試'url_for([:edit,@ client,project])'或'edit_client_project_path(@client,project) – CDub