为什么Rubymine无法识别我的命名空间继承的控制器?

时间:2018-10-05 19:05:15

标签: ruby-on-rails ruby rubymine

我有一个名为backend的命名空间和以下控制器application_controller.rb

class Backend::ApplicationController < ApplicationController
end

现在,我从用户控制器继承了该控制器:

class Backend::UserController < Backend::ApplicationController
  def index
    @users = User.all
  end

  ...
end

对于应用程序控制器的继承,Rubymine向我显示以下错误:

Expected: ; or end of line

此代码对ruby解释器适用。我该如何教给Rubymine?

我正在使用RubyMine 2018.2.3,并使用Ruby 2.5.1p57。

提前谢谢!

1 个答案:

答案 0 :(得分:3)

我猜您应该尝试实际打开模块的正确“纵向”方式。

这两种方法实际上并不等效:

class Backend::ApplicationController < ApplicationController
end

module Backend
  class ApplicationController < ::ApplicationController
  end
end

由于稍后会正确设置模块嵌套以按预期工作:

module Backend
  # this class will inherit from Backend::ApplicationController
  # and not ::ApplicationController
  class UserController < ApplicationController
  end
end

通常应避免使用“命名空间”类的“快捷方式”定义(class Foo::Bar),因为它会引起不断查找的问题。