Rails 和 Devise - 命名空间是未初始化的常量

发布于 2024-12-28 21:10:47 字数 578 浏览 1 评论 0原文

我正在尝试使用命名空间来声明 api。

我的routes.rb包含:

  devise_scope :user do
    namespace :api do
      namespace :v1 do
        match 'log_in', :to => 'token_authentications#log_in', :via => "post"
      end
    end
  end

并且我的*token_authentications_controller.rb*看起来像这样:

class Api::V1::TokenAuthenticationsController < ApplicationController

...

  def log_in

  ...

  end

...

end

当我点击:api/v1/log_in时,我得到:

路由错误
未初始化的常量 Api

那么我需要在某处声明命名空间吗?

I am trying to use namespaces to declare an api.

My routes.rb contains:

  devise_scope :user do
    namespace :api do
      namespace :v1 do
        match 'log_in', :to => 'token_authentications#log_in', :via => "post"
      end
    end
  end

And my *token_authentications_controller.rb* looks like this:

class Api::V1::TokenAuthenticationsController < ApplicationController

...

  def log_in

  ...

  end

...

end

When I hit: api/v1/log_in I get:

Routing Error
uninitialized constant Api

So do I need to declare the namespace somewhere?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

踏月而来 2025-01-04 21:10:47

Rails 希望名称空间遵循目录结构,除非我弄错了。

给定控制器的类名 Api::V1::TokenAuthenticationsController,rails 期望它位于 app/controllers/api/v1/token_authentications_controller.rb 中。

如果您只是将控制器移动到正确的文件夹,我想应该没问题。

您可能还想确保在某处实际声明命名空间模块,例如像这样重构您的控制器:

module Api
  module V1
    class TokenAuthenticationsController

...

    end
  end
end

Rails expects namespaces to follow directory structure, unless I'm mistaken.

Given your class name for your controller, Api::V1::TokenAuthenticationsController, rails expects it to live in app/controllers/api/v1/token_authentications_controller.rb.

If you just move your controller to the correct folder, I think you should be fine.

You might also want to make sure to actually declare the namespace modules somewhere, like for instance refactoring your controller as such:

module Api
  module V1
    class TokenAuthenticationsController

...

    end
  end
end
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文