我有一个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来解决这个问题,因为我没有任何方法可以从类中导入......
答案 0 :(得分:0)
解决这个问题的方法只是让你的部分路径更明确。所以在我的例子中,在我的应用程序布局文件中,我改变了部分路径:
<%= render "menu" %>
到此:
<%= render "account/base/menu" %>
这是因为rails在常规位置查找partial,但找不到它并引发错误。在将部分放入HTML时,准确指定部分可以找到的地方解决了Rails或任何宝石的问题,因为他们不知道你的部分在哪里。