0

2つの名前空間があり、それらが同じリソースを使用している場合、次のことを実行できますか?

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
4

4 に答える 4

10

同様の答えを探しているときに、このチケットに出くわしました。私はこのように前にこの問題を解決しました:

%w[captures displays].each do |space|
  namespace space do
    resources :ones
    resources :twos
    resources :threes
    # ...
  end
end
于 2013-11-21T02:50:00.967 に答える
1

はい、共通のリソースが使用されている場合でも、ルートで名前空間を使用する場合は、個別の宣言が必要です。

于 2013-01-23T06:13:36.810 に答える
0

これを行うことはできません-名前空間メソッドの2番目のオプションはハッシュです。名前空間メソッドは、:path、module、および:asのショートカットにすぎません。1回の呼び出しで2つの名前空間に対しては実行されません。

于 2013-01-23T06:16:43.550 に答える
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
于 2015-08-30T14:01:53.593 に答える