Ruby中的多重继承...从多个控制器类继承。

时间:2013-03-05 15:53:59

标签: ruby-on-rails ruby multiple-inheritance

我有一个Rails应用程序。我的所有控制器都继承自BaseController继承的ApplicationController::Base。这是为了将我的部分组织成单独的命名空间。它很棒。

这是问题所在。

我正在尝试使用Devise gem,但是Devise::SessionsController无法找到我的部分,这些部分存储在名为Base的文件夹中。我的解决方案是创建一个继承自Devise::SessionsController的本地控制器,如下所示:

module Account
  class SessionsController < Devise::SessionsController
  end
end

问题是这个本地SessionsController仍然需要从我的BaseController继承,以便它可以找到我的部分内容。合理?

BaseController代码:

module Account
  class BaseController < ApplicationController
  end
end

ApplicationController代码:

class ApplicationController < ActionController::Base
  protect_from_forgery

end

我一直在阅读关于mixins的内容,但看不出我如何使用mixins来解决这个问题,因为我没有任何方法可以从类中导入......

1 个答案:

答案 0 :(得分:0)

解决这个问题的方法只是让你的部分路径更明确。所以在我的例子中,在我的应用程序布局文件中,我改变了部分路径:

<%= render "menu" %>

到此:

<%= render "account/base/menu" %>

这是因为rails在常规位置查找partial,但找不到它并引发错误。在将部分放入HTML时,准确指定部分可以找到的地方解决了Rails或任何宝石的问题,因为他们不知道你的部分在哪里。