Rails – 如何从lib目录中调用方法?

我在lib目录中有这个方法(文件my_class_name.rb ):

 class MyClassName def doSomething ... end ... end 

在控制器中:

 class UsersController < ApplicationController require 'my_class_name' def show_stats ::MyClassName.doSomething() end end 

回报

MyClassName的未定义方法`doSomething’:Class

如何正确调用此方法?

你已经用一个实例方法编写了一个类,所以如果你想调用它的编写方式,你需要编写:

  mcn = MyClassName.new mcn.doSomething 

(通过创建实例,然后在该实例上调用该方法)

如果你想要的是一个类方法,请将其定义为:

 class MyClassName def self.doSomething ... end ... end 

并称之为: MyClassName.doSomething

 class MyClassName def self.doSomething ... end ... end 

你已经制作了实例方法而不是类方法,改变你的代码如下,而且我建议你不要把它作为一个类使它成为一个模块并包含在你的模型中并从模型中调用doSomething。

 class MyClassName def self.doSomething ... end ... end class UsersController < ApplicationController require 'my_class_name' def show_stats MyClassName.doSomething() end end 

如果您希望使其按原样运行(只需稍加更改),那么您应该创建一个MyClassName实例,例如:: MyClassName。 新的 .doSomething()

 class MyClassName def doSomething ... end ... end class UsersController < ApplicationController require 'my_class_name' def show_stats ::MyClassName.new.doSomething() end end