2012-07-02 53 views
2

正確的路由我有兩個資源,一個是另一個的嵌套的資源:一個奇異嵌套資源

parent_resourcechild_resource

這給了我以下途徑:

somesite.com/parent_resources/14 
somesite.com/parent_resources/14/child_resources/1 

然而,只有永遠將成爲每個parent_resourcechild_resource,所以要使用該網站,這是非常混亂的人。我希望child_resource路徑如下所示:

somesite.com/parent_resource/14/child_resource 
somesite.com/parent_resource/14/child_resource/edit 
etc 

要做到這一點的正確方法是什麼?

我的routes.rb

resources :parent_resources do 

    resource :child_resource do 
    end 

end 

從軌指導路由:

A singular resourceful route generates these helpers: 

new_geocoder_path returns /geocoder/new 
edit_geocoder_path returns /geocoder/edit 
geocoder_path returns /geocoder 

但是,我們說明了什麼?

我的航線耙途徑產生:

parent_resource_child_resource  POST /parent_resources/:parent_resource_id/child_resource(.:format)     child_resources#create 


new_parent_resource_child_resource GET /parent_resources/:parent_resource_id/child_resource/new(.:format)    child_resources#new 

edit_parent_resource_child_resource GET /parent_resources/:parent_resource_id/child_resource/edit(.:format)   child_resources#edit 

            GET /parent_resources/:parent_resource_id/child_resource(.:format)     child_resources#show 

            PUT /parent_resources/:parent_resource_id/child_resource(.:format)     child_resources#update 

            DELETE /parent_resources/:parent_resource_id/child_resource(.:format)     child_resources#destroy 
+0

我們可以看到你的routes.rb嗎? –

+0

@KennyBania將其添加到問題中。 – Undistraction

+0

您應該將複數名稱傳遞給'resources'並將一個單數名稱傳遞給'resource'。你將單數傳遞給兩者。 –

回答

5

在你的路由,利用奇異resource方法定義子資源:

resources :parent_resources do 
    resource :child_resource 
end 

按照慣例,對孩子的控制仍然會ChildResourcesController,複數。

Rails有一個相當不錯的路由指南。請參閱關於singular resources的部分。

+0

謝謝。問題是這不會爲child_resource#show生成一條命名路線。我只得到一個創作,一個編輯和一個新的。 – Undistraction

+0

是的,你這樣做。如果你的父母是「用戶」,你的孩子是「個人檔案」,你應該有'user_profile_path(@user)' –

+0

我只有使用rake路由顯示的以下路徑:parent_resource_child_resources POST /parent_resources/:parent_resource_id/child_resources(.:format )child_resources#創建 new_parent_resource_child_resources GET /parent_resources/:parent_resource_id/child_resources/new(.:format)child_resources#新 edit_parent_resource_child_resources GET /parent_resources/:parent_resource_id/child_resources/edit(.:format)child_resources#編輯 – Undistraction