繁体   English   中英

包含在Rails控制器中不起作用

[英]Include doesn't work inside Rails controller

考虑我在/lib/foo/bar/baz.rb有一个类,定义如下:

module Foo
  module Bar
    class Baz
      def initialize
        self.name = 'Baz'
      end
    end
  end
end

我还具有以下控制器/controllers/my_controller.rb ,定义如下:

class MyController < ApplicationController
  def index
    render json: ::Foo::Bar::Baz.new
  end
end

会像预期的那样输出JSON {name: "Baz"}

问题是如果我尝试包括Foo::Bar模块,那么我不必每次都想使用它时将其添加到Baz类名之前:

class MyController < ApplicationController
  include ::Foo::Bar

  def index
    render json: ::Baz.new
  end
end

返回以下错误消息: uninitialized constant Baz

为什么???

我认为你应该尝试

include ::Foo::Bar
...
render json: Baz.new

::Baz确保在顶级名称空间中找到模块Baz ,因此您不应使用此语法。 render json: Baz.new应该可以工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM