1

これはばかげたものだと思いますが、私はそれを理解してグーグルで検索しようとしてしばらく時間を費やしましたが、役に立たなかったのです。コントローラでRubyGemを使用しようとしています。それをGemfileに含め、bundle installを実行し、gemリストに表示されるのを確認し、ローカルサーバーを再起動しました。しかし、どういうわけか、gem( rails_rrdtool )を呼び出そうとすると、それは私に教えてくれます

uninitialized constant RrdgraphsController::RRD
app/controllers/rrdgraphs_controller.rb:22:in `show'

コード内でウィッグが発生する場所は、電話をかけているときです。

RRD.graph

宝石がどこにあるのかわからないようです...しかし、requireを使用してirbセッションに正常にインポートできます。だから私はそれがうまくいくことを知っています、それはどういうわけかそこに入っていないだけです...

Bundlerは、私が想定している宝石の包含を処理する必要があります。私はそれを間違った場所で呼んでいますか?

4

1 に答える 1

1

これは名前空間の問題のように見えます。エラーは、現在のクラス内の定数を検索しているRrdgraphsController::RRDことを示しています。現在のコンテキスト外のクラスを検索する必要がある場合です。

クラスの場所を完全に定義するには、クラス名の前に二重コロンを付けてみてください。

::RRD.graph #rest of your code

この他の受け入れられた答えでこれが何をするかについての良いアナロジーがあります。基本的には絶対パスを作成するため、Rubyは推測する必要がありません。

于 2012-05-22T00:34:31.237 に答える