如果我有两个名称空间,并且他们使用相同的资源,我可以执行以下操作吗?
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
或者是必要的单独声明。我知道如果他们最终有不同的资源他们必须分开,但如果我可以宣布共享的那么我可以做这样的事情:
#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
答案 0 :(得分:8)
我在寻找类似答案时遇到了这张票。我之前解决了这个问题:
%w[captures displays].each do |space|
namespace space do
resources :ones
resources :twos
resources :threes
# ...
end
end
答案 1 :(得分:1)
是的,即使使用公共资源,在路由中使用命名空间时也需要单独声明。
答案 2 :(得分:0)
你不能这样做 - 命名空间方法中的第二个选项是哈希。命名空间方法只是一个快捷方式:path,module和:as。它不会在一次调用中为两个名称空间执行此操作。
答案 3 :(得分:0)
您还可以将proc作为块传递给名称空间方法,如下所示:
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