1

我觉得这是一个愚蠢的问题,但我花了一些时间试图弄清楚并在谷歌上搜索它,但无济于事。我正在尝试在控制器中使用 Ruby Gem。我已将它包含在我的 Gemfile 中,运行 bundle install,看到它出现在我的 gems 列表中,重新启动了我的本地服务器。但不知何故,每当我尝试调用 gem ( rails_rrdtool ) 它只是告诉我

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

我的代码中它假发的地方是我打电话的时候

RRD.graph

就好像它不知道 gem 到底在哪里......但是,我可以使用 require 将它成功导入到 irb 会话中。所以我知道它有效,它只是没有进入那里......

Bundler 应该处理我假设的 gem 的包含。我在错误的地方调用它吗?

4

1 回答 1

1

This looks like a namespacing issue. Your error says it is looking for the constant inside of the current class: RrdgraphsController::RRD when it should be looking for a class outside of the current context.

Try prefixing the class name with a double colon to fully define the location of the class.

::RRD.graph #rest of your code

There's a good analogy of what this does in this other accepted answer. Basically it creates an absolute path so Ruby doesn't have to guess.

于 2012-05-22T00:34:31.237 回答