2014-01-14 108 views
1

我有兩個資源,ClientsProjects當循環嵌套資源時,Rails選擇錯誤路由

routes.rb

resources :clients do 
    resources :projects 
end 

rake routes給了我這個路由前綴client_projectprojects#show行動

在我看來,我呼籲:

<% @client.projects.each do |project| %> 
    <%= link_to project.name, project %> 
<% end %> 

和Rails不斷拋出一個錯誤:undefined method project_path,這告訴我由於某種原因該視圖試圖呼叫project_path而不是client_project_path。我嘗試重新啓動我的服務器(甚至重新啓動計算機),似乎無法找到爲什麼它不會正確調用路由。我最近重構了我的路線(這導致了這個突破)。我在這裏錯過了什麼嗎?這個確切的模式適用於我的應用程序中的每一個其他模型,只有重構的路線沒有。

回答

0

我從來沒有成功讓嵌套路由工作,只需傳遞有問題的對象作爲link_to的url參數......另外(也許這只是我)我喜歡我的模板有點「明確「 比起那個來說。

一對夫婦的事情可以做:

<%= link_to project.name, url_for([@client, project]) %>

<%= link_to project.name, client_project_path(@client, project) %>

+0

這很好。我從一個淺層資源重構,這將解釋這個問題。我將如何處理'edit_client_project_path'網址?使用'edit_client_project_path(screen)'會拋出一個錯誤「missing required keys:[:id]」 –

+0

嘗試'url_for([:edit,@ client,project])'或'edit_client_project_path(@client,project) – CDub