0

Railsアプリを持っています。授業がある

 class ParserPlugin < ApplicationController
   def self.loadPlugins
     Dir.foreach("/plugins") do |f|
       if f != '.' and f != '..'
         load("/plugins" + f.to_s)
       end
     end
   end
   def self.createplugin
     @@plugins << self.new
   end
 end

そして、私は「railsc」からプロジェクトを開始します。そして、「ParserPlugin.loadPlugins」を呼び出そうとすると、次のように表示されます。

NameError: uninitialized constant ParserPlugin

助けてくれませんか。

4

2 に答える 2

0

ファイル名がクラス名と一致していることを確認してください。次のファイル名:

class ParserPlugin < ...

そうしないparser_plugin.rbと、エラーが発生します

NameError: uninitialized constant ParserPlugin

クラス/app/controllersから継承しているので、ファイルが入っていると思います。ApplicationController

于 2013-03-12T20:24:34.137 に答える
0

Railsは遅延読み込みを使用します。つまり、定数が表示されたときにそれを解析し、一致するファイルを探します。起動時にすべてのクラスが読み込まれるわけではありません。これは、に初めてアクセスしようとしたときに発生しますParserPlugin。この場合、Railsは、自動ロードされたディレクトリの1つで呼び出されたファイルを探していますparser_plugin.rb(おそらくcontrollers、設定した継承に基づいています)。

補足:これはおそらくから継承すべきではありませんApplicationController。コントローラでない場合は、コントローラに接続しないでください。どこかに置いてください。

于 2013-03-12T20:24:50.980 に答える