Rails在命名空间中生成一个更多的命名空间,那里有资源,还有一个资源:子文件夹prblem

时间:2013-08-01 09:13:56

标签: ruby-on-rails

我无法理解如何在命名空间中生成资源,以及如何在资源中生成资源:子文件存在问题... 我怎么能在rails控制器和视图中生成这样的路由:

  namespace :admin do
    namespace :catalogs do  
      namespace :parfume do  
        resource :brand do  
          resource :models do  

我试试:

rails g scaffold Admin :: Catalog

等...

rails g scaffold Admin :: Catalog :: To :: Brand

但是在路线上我看到铁轨正在产生许多这种路线:

  namespace :catalogs do  
      namespace :to do  
        namespace :brand do  
          namespace :models do  
            namespace :types do 
              resources :to_articles 
            end 
          end 
        end 
      end 
    end
    namespace :catalogs do  
      namespace :to do  
        namespace :brand do  
          namespace :models do 
            resources :types 
          end 
        end 
      end 
    end

    namespace :catalogs do  
      namespace :to do  
        namespace :brand do 
          resources :models 
        end 
      end 
    end

但我希望它必须通过命名空间和资源来完成,而不是现在的rails生成器如何...

那么哪个命令有利于在子文件夹中生成资源一次作为名称空间,其他作为资源?,我是正确的吗?

注意:它必须是如此长的路径!

1 个答案:

答案 0 :(得分:1)

请试试

rails g scaffold Admin/Catalog/Parfume/Brand

它将按以下方式创建路线

namespace :admin do
    namespace :catalog do
      namespace :parfume do
        resources :brands
      end
    end
  end

您可以手动执行此操作。允许您拥有管理员和目录命名空间。在目录命名空间的旁边,您有parfume和品牌作为控制器。并假设用户是admin命名空间中的控制器。

因此,通过以下代码,您将创建parfume和品牌控制器。

rails g controller admin/catalog/parfume
rails g controller admin/catalog/brands

这将在您的应用程序中创建控制器。但是在路线文件中,您需要手动添加代码,如下所示

namespace :admin do
    namespace :catalog do
      resources :parfume
      resources :brand
    end
  end

但是如果您将品牌作为parfume控制器的嵌套资源,那么您需要稍微改变路线

namespace :admin do
    namespace :catalog do
      resources :parfume do
        resources :brand
      end
    end
  end

然后,根据我们的示例,我们在admin命名空间中有一个用户控制器。所以我们需要在admin命名空间中创建一个用户控制器,以下是创建用户控制器的代码

rails g controller admin/users

除此之外,我们还需要在路径文件中添加一行代码。

  namespace :admin do
    namespace :catalog do
      resources :parfume do
        resources :brand
      end
    end

    resources :users
  end

脚手架创建控制器和模型,但根据您的要求,它在路径中创建额外的代码。因此,我们可以根据上面的例子进行优化。

关于创建模型,您可以通过以下命令

创建它
rails g model YourModelName