2013-01-23 82 views
0

如果我有兩個名稱空間,並且它們使用相同的資源,我可以執行以下操作嗎?軌道路徑中的多個名稱空間聲明

namespace :captures, :displays do 
    resources :ones 
    resources :twos 
    resources :threes 
    # ... 
end 

代替:

namespace :captures do 
    resources :ones 
    resources :twos 
    resources :threes 
    # ... 
end 

namespace :displays do 
    resources :ones 
    resources :twos 
    resources :threes 
    # ... 
end 

或是單獨聲明neccessary。我知道,如果他們最終有不同的資源,他們將不得不分隔符,但如果我可以聲明共享的那些話,我可以做這樣的事情:而在航線使用的命名空間,甚至

#shared 
namespace :captures, :displays do 
    resources :ones 
    resources :twos 
    resources :threes 
    # ... 
end 

#individual 
namespace :captures do 
    resources :fours 
    resources :fives 
    resources :sixes 
end 
namespace :displays do 
    resources :sevens 
    resources :eights 
    resources :nines 
end 

回答

1

是單獨的聲明是必要的如果使用公共資源。

+0

,你可以參考,http://stackoverflow.com/questions/6896339 /導軌-3-不同名稱空間內嵌套的資源 –

0

你不能這樣做 - 命名空間方法中的第二個選項是散列。命名空間方法只是路徑,模塊和as的快捷方式。它不會在一次調用中爲兩個名稱空間執行此操作。

7

我在查找類似答案時遇到此票。我之前解決了這個問題是這樣的:

%w[captures displays].each do |space| 
    namespace space do 
    resources :ones 
    resources :twos 
    resources :threes 
    # ... 
    end 
end 
0

你也可以通過PROC作爲一個塊到namepace方法,像這樣:

duplicate_routes = -> do 
    resources :ones 
    resources :twos 
end 

namespace :captures, &duplicate_routes 
namespace :displays, &duplicate_routes 
duplicate_routes.call # use the same routes in root namespace