为什么 Rubymine 无法识别我的命名空间继承控制器?
Why doesn't Rubymine recognize my namespaced inherited controller?
我有一个名为 backend
的命名空间和以下控制器 application_controller.rb
:
class Backend::ApplicationController < ApplicationController
end
现在我从我的用户控制器继承这个控制器:
class Backend::UserController < Backend::ApplicationController
def index
@users = User.all
end
...
end
对于应用程序控制器的继承Ruby我的显示了以下错误:
此代码适用于 ruby 解释器。我怎样才能把这个教给 Ruby我的?
我正在 Ruby我的 2018.2.3 并使用 Ruby 2.5.1p57.
提前致谢!
我猜您应该尝试以正确的 "longhand" 方式实际打开模块。
这两种方法实际上并不等同:
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
一般来说,"namespaced" 类 的 "short-cut" 定义 (class Foo::Bar
) 应该避免,因为它会引起不断查找的问题。
我有一个名为 backend
的命名空间和以下控制器 application_controller.rb
:
class Backend::ApplicationController < ApplicationController
end
现在我从我的用户控制器继承这个控制器:
class Backend::UserController < Backend::ApplicationController
def index
@users = User.all
end
...
end
对于应用程序控制器的继承Ruby我的显示了以下错误:
此代码适用于 ruby 解释器。我怎样才能把这个教给 Ruby我的?
我正在 Ruby我的 2018.2.3 并使用 Ruby 2.5.1p57.
提前致谢!
我猜您应该尝试以正确的 "longhand" 方式实际打开模块。
这两种方法实际上并不等同:
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
一般来说,"namespaced" 类 的 "short-cut" 定义 (class Foo::Bar
) 应该避免,因为它会引起不断查找的问题。