代码之家  ›  专栏  ›  技术社区  ›  Robin

为什么Rubymine不能识别我的同名继承控制器?

  •  1
  • Robin  · 技术社区  · 6 年前

    我有一个名字空间叫做 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 2018.2.3和Ruby 2.5.1p57。

    提前谢谢!

    1 回复  |  直到 6 年前
        1
  •  3
  •   max Mike Williams    6 年前

    我猜你应该尝试正确的“直接”方式来打开模块。

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

    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 )应该避免使用“名称空间”类,因为它会导致常量查找出现问题。