1

my_class_name.rblib dir (ファイル)にこのメソッドがあります。

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

そのまま (小さな変更を加えて) 動作させる場合は、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 に答える
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 に答える