0

有两个相似的类名(一个在 lib 中,一个在控制器中)是错误的吗?

myapp/lib/company/api.rb

module Company
  class Api
    include HTTParty

    base_uri "#{API_CONFIG['scheme']}://#{API_CONFIG['host']}"
    digest_auth API_CONFIG['email'], API_CONFIG['key']

    DEFAULT_OPTIONS = {
      limit: 1
    }

  #...
end

myapp/app/controllers/api/something_controller.rb

class Api::SomethingController < ApplicationController
  def index
    # TODO: Verify q
    q = params[:q]

    @result = Company::Api.new().send("get_sdf_#{q}",
                                   rn: "123",
                                   limit: params[:limit])


  #...
end

开发日志

LoadError (Expected /home/cekpo/myapp/lib/company/api.rb to define Api):
  activesupport (3.2.13) lib/active_support/dependencies.rb:503:in `load_missing_constant'
  activesupport (3.2.13) lib/active_support/dependencies.rb:192:in `block in const_missing'
  activesupport (3.2.13) lib/active_support/dependencies.rb:190:in `each'
  activesupport (3.2.13) lib/active_support/dependencies.rb:190:in `const_missing'
  activesupport (3.2.13) lib/active_support/inflector/methods.rb:230:in `block in constantize'
  activesupport (3.2.13) lib/active_support/inflector/methods.rb:229:in `each'
  activesupport (3.2.13) lib/active_support/inflector/methods.rb:229:in `constantize'
  activesupport (3.2.13) lib/active_support/dependencies.rb:554:in `get'
4

1 回答 1

0

这里没有两个相同的命名类。一个类被命名Api,在模块中定义Company。另一个是SomethingController在 module 中定义的类Api

我想你忘了定义 module Company

添加一个以lib/Company.rb内容命名的文件

module Company
end

现在它应该可以工作了。

于 2013-09-29T09:09:19.510 回答