在控制器中调用类方法时未初始化的常量

时间:2014-10-15 05:30:06

标签: ruby-on-rails routing

我有一个名为Device的类。它有一个模型device.rb

我已设置路由,以便从两个不同的路径调用相同的控制器。即路径:

/driver_api/v1/devices

/sender_api/v1/devices

都会调用以下控制器:

/user_api/v1/devices

在我的routes.rb中我有:

namespace :driver_api do
  namespace :v1 do
     resources :devices, :only => [:create], controller: '/user_api/v1/devices'
  end
end

namespace :sender_api do
  namespace :v1 do
     resources :devices, :only => [:create], controller: '/user_api/v1/devices'
  end
end

现在,在我的设备控制器中,我试图调用Device类方法。即在我的控制器中:

class UserApi::V1::DevicesController < ApplicationController

      Devise.method_name(input)
end

但是我收到了一个错误:

uninitialized constant UserApi::V1::DevicesController::Device

为什么我收到此错误?

1 个答案:

答案 0 :(得分:1)

因为你写了Devise而不是Device,这可能是一个很好的理由。

如果这只是问题的一个typpo,这是另一种选择。 当你按照你的方式定义类时,有时会出现某种命名问题(我忽略了为什么会发生这种情况)

尝试通过定义模块来分解类作用域:

module UserApi
  module V1
    class DevicesController < ApplicationController
      # rest
    end
  end
end