我正在使用如下的命名空间。当我访问http://localhost:3000/api/v1/user_token
时,
我收到了像这样的RoutingError错误。我做错了什么。
ActionController :: RoutingError(未初始化的常量Api :: V1 :: Knock): app / controllers / api / v1 / user_token_controller.rb:3:in
<module:V1>' app/controllers/api/v1/user_token_controller.rb:2:in
&#39; app / controllers / api / v1 / user_token_controller.rb:1:在`&#39;
这是我的代码。 ⬇︎
routes.rb
Rails.application.routes.draw do
namespace :api, format: 'json' do
namespace :v1, format: 'json' do
post 'user_token' => 'user_token#create'
end
end
end
users_token_controller.rb
module Api
module V1
class UserTokenController < Knock::AuthTokenController
end
end
end
application_controller.rb
class ApplicationController < ActionController::Base
include Knock::Authenticable
end
答案 0 :(得分:1)
module Api
module V1
class UserTokenController < ::Knock::AuthTokenController
end
end
end
::
告诉Ruby在顶层查找Knock
而不是当前模块嵌套(API::V1
)。
请参阅Everything you ever wanted to know about constant lookup in Ruby和Avoid these traps when nesting Ruby modules进行深入解释。