导轨 - 如何调用从lib目录的方法呢?(Rails - how to call methods f

2019-08-17 04:51发布

我在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

回报

未定义的方法`doSomething的”为MyClassName:类

如何正确地调用这个方法?

Answer 1:

你已经写了有一个实例方法的类,所以如果你想打电话给它,你怎么都写过,你需要这样写:

  mcn = MyClassName.new
  mcn.doSomething

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

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

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

并调用它像: MyClassName.doSomething



Answer 2:

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


Answer 3:

你已经做了和实例方法不是类的方法,改变你的代码如下,再加上我会建议你,而不是使其作为一类编译成模块,包括在你的模型,并从模型调用的doSomething的。

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

class UsersController < ApplicationController
  require 'my_class_name'

  def show_stats
    MyClassName.doSomething()
  end
end


Answer 4:

如果您正在寻找使其工作的是(有微小的变化),那么您应该创建MyClassName例如:: MyClassName的一个实例。 .doSomething()

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

class UsersController < ApplicationController
  require 'my_class_name'

  def show_stats
    ::MyClassName.new.doSomething()
  end
end


文章来源: Rails - how to call methods from lib directory?