1

我在 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:Class 的未定义方法“doSomething”

如何正确调用此方法?

4

4 回答 4

4

您已经编写了一个带有实例方法的类,因此如果您想以您编写的方式调用它,您需要编写:

  mcn = MyClassName.new
  mcn.doSomething

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

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

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

并称之为:MyClassName.doSomething

于 2013-02-27T11:08:49.687 回答
0
class MyClassName
  def self.doSomething
    ...
  end
  ...
end
于 2013-02-27T11:06:20.313 回答
0

您已经创建了实例方法而不是类方法,请按如下方式更改您的代码,另外我建议您不要将其作为一个类,而是将其作为一个模块并包含在您的模型中并从模型中调用 doSomething。

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

class UsersController < ApplicationController
  require 'my_class_name'

  def show_stats
    MyClassName.doSomething()
  end
end
于 2013-02-27T11:18:37.483 回答
0

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

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

class UsersController < ApplicationController
  require 'my_class_name'

  def show_stats
    ::MyClassName.new.doSomething()
  end
end
于 2013-02-27T12:41:23.937 回答