Rails 4 Superclass仅在生产中与admin命名空间不匹配

时间:2015-10-24 22:05:59

标签: ruby-on-rails ruby

所以我在Rails 4中编写了一个小组合应用程序。它有一个管理命名空间,允许我只公开某些控制器。

在开发过程中,一切都运行良好,但是当我部署到生产环境(或在我的开发机器上切换到生产)时,我收到以下错误:

superclass mismatch for class WorksController (TypeError)

我的控制器结构如下所示:

controllers ->
  admin ->
    admin_controller.rb
    portfolio ->
      works_controller.rb
  portfolio->
    works_controller.rb

正如您所看到的,我在作品集中命名了作品。

控制器声明如下:

/controllers/admin/admin_controller
class Admin::AdminController < ApplicationController

/controllers/admin/portfolio/works_controller
class Admin::Portfolio::WorksController < Admin::AdminController

/controllers/portfolio/works_controller.rb
class Portfolio::WorksController < ApplicationController

现在我的routes.rb,请注意我使用的是友好ID,所以我使用自定义路线让一个漂亮的客户端面向网址。

get '/portfolio/:id' => 'portfolio/works#show', as: 'portfolio_work'

namespace :admin do
  namespace :portfolio do
    resources :works
  end
end

所以我知道我必须以某种方式搞砸了,但我不知道怎么做。我得到的错误与重新开课有关,但我不知道我是如何设法的。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

如果您重新定义/ controllers / admin / portfolio / works_controller,请执行以下操作:

module Admin
  class Portfolio::WorksController < AdminController

答案 1 :(得分:1)

在@ReggieB试图帮助我之后发现了这个问题。原来我的Devise模型'Admin'和名为'Admin'的命名空间会产生问题(应该如此)。