2014-02-21 43 views
0

我有3個資源在層次結構如下:嵌套的路線沒有意外的頂級路線

house 1-* residents 1-* books 

我們知道,它不是偉大的,有深層嵌套的路線,所以我們盡力嵌套在路線最深1資源。定義是這樣的:

resources :houses do 
    resources :residents 
end 

resources :residents do 
    resources :books 
end 

的問題是,我們最終確定:residents作爲可以在沒有任何嵌套訪問的資源 - 作爲:books定義的一部分。有沒有辦法將:books定義爲嵌套在:residents中,而不會無意中將:residents註冊爲頂級路線?

+0

這是不推薦的,因爲您的用戶將無法通過簡單地刪除網址的最後部分來退出應用。 –

回答

1

這可以通過使用範圍,你的情況來完成:

scope 'residents/:resident_id' do 
    resources :books 
end 

然而,正如我在評論中提到,這種做法最終會混淆誰想到的URL以某種方式表現的用戶(刪除最後一位將他們提升一級)。