1

我有一个 Rails 应用程序。我的所有控制器都继承自 aBaseController继承自ApplicationController::BaseThis 用于将我的部分组织到单独的命名空间中。它工作得很好。

这是问题所在。

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

module Account
  class SessionsController < Devise::SessionsController
  end
end

问题是这个本地SessionsController仍然需要从我的继承,BaseController所以它可以找到我的部分。说得通?

基本控制器代码:

module Account
  class BaseController < ApplicationController
  end
end

应用控制器代码:

class ApplicationController < ActionController::Base
  protect_from_forgery

end

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

4

1 回答 1

0

解决这个问题的方法很简单,就是让你的局部路径更加明确。因此,在我的示例中,在我的应用程序布局文件中,我更改了部分路径:

<%= render "menu" %>

对此:

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

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

于 2013-03-10T18:09:16.693 回答