2

我有以下路线:

namespace :admin do
  scope 'foo', module: 'foo' do
    resources :bar
    resources :baz
  end

  scope 'lorem', module: 'lorem' do
    resources :ipsum
    resources :baz
  end
end

现在,我希望 'baz' 资源使用相同的控制器(可在controllers/admin/baz_controller.rb但我不确定如何告诉 Rails 我希望这些资源在不同的命名空间下但使用相同的控制器。

4

3 回答 3

0

它应该看起来像这样:

scope 'lorem', module: 'lorem' do
  resources :ipsum
  resources :baz, :module=>'foo', :controller=>'baz'
end

这取决于控制器所在的模块。

有关详细信息,请参阅Rails 指南Rails API

于 2012-08-02T09:02:23.313 回答
0

也许这会有所帮助。

namespace :admin do
  resources :baz, path: 'foo/baz', as: 'foo_baz'
  scope 'foo', module: 'foo' do
    resources :bar
  end

  resources :baz, path: 'lorem/baz', as: 'lorem_baz'
  scope 'lorem', module: 'lorem' do
    resources :ipsum
  end
end

请注意,您需要使用as:才能生成路径。但它们可以是别的东西。

不确定您是否还需要添加模块参数,但您明白了。

于 2012-08-06T19:28:40.283 回答
0

我认为在没有混乱路线的情况下做到这一点的唯一方法是创建一个从旧控制器继承的新控制器。

class Foo::BazController < Admin::BazController
end
于 2012-08-11T08:57:27.380 回答