Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 从控制器调用模块功能(NoMethodError)_Ruby On Rails_Ruby On Rails 3_Module_Controller - Fatal编程技术网

Ruby on rails 从控制器调用模块功能(NoMethodError)

Ruby on rails 从控制器调用模块功能(NoMethodError),ruby-on-rails,ruby-on-rails-3,module,controller,Ruby On Rails,Ruby On Rails 3,Module,Controller,因此,我有一个模块“中间人”,我可以在rails控制台中将其称为“中间人”,但在控制器中,我得到了一个命名错误 在控制器中,我有: class SignUpController < ApplicationController include MiddleMan def page_one @package = MiddleMan::read_catalog("a", "b", "c") end end 有什么想法吗?由于您包含了该模块,实例方法read\u cata

因此,我有一个模块“中间人”,我可以在rails控制台中将其称为“中间人”,但在控制器中,我得到了一个命名错误

在控制器中,我有:

class SignUpController < ApplicationController
  include MiddleMan
  def page_one
      @package = MiddleMan::read_catalog("a", "b", "c")
  end
end

有什么想法吗?

由于您包含了该模块,实例方法
read\u catalog
将添加到您的类中,因此您可以直接调用它:

class SignUpController < ApplicationController
  include MiddleMan
  def page_one
      @package = read_catalog("a", "b", "c")
  end
end
类注册控制器
谢谢,这很有效。。。我还必须将中间人文件的名称更改为middle_man.rba作为旁注,如果您希望直接从模块调用方法,而不将它们混入,则需要将它们定义为
def self.method_name
,以便它们绑定到模块实例本身。另一个(奇怪的)技巧是使模块扩展自身。但是,您没有使用
语法,只使用了一个点。
class SignUpController < ApplicationController
  include MiddleMan
  def page_one
      @package = read_catalog("a", "b", "c")
  end
end