Ruby on rails “设计控制器”;未初始化的常量Api::V1::RegistrationController“;仅在Rails API中
我正在创建一个rails api,我希望资源在Ruby on rails “设计控制器”;未初始化的常量Api::V1::RegistrationController“;仅在Rails API中,ruby-on-rails,devise,Ruby On Rails,Devise,我正在创建一个rails api,我希望资源在/api/v1/路由下,包括注册和身份验证 我创建了以下路线,为我提供了设计所需的路线: config/routes.rb namespace :api, defaults: { format: :json } do namespace :v1 do devise_for :users, as: 'api' end end 它规定: Prefix Verb URI Pattern
/api/v1/
路由下,包括注册和身份验证
我创建了以下路线,为我提供了设计所需的路线:
config/routes.rb
namespace :api, defaults: { format: :json } do
namespace :v1 do
devise_for :users, as: 'api'
end
end
它规定:
Prefix Verb URI Pattern Controller#Action
new_api_user_session GET /api/v1/users/sign_in(.:format) api/v1/sessions#new {:format=>:json}
api_user_session POST /api/v1/users/sign_in(.:format) api/v1/sessions#create {:format=>:json}
destroy_api_user_session DELETE /api/v1/users/sign_out(.:format) api/v1/sessions#destroy {:format=>:json}
cancel_api_user_registration GET /api/v1/users/cancel(.:format) api/v1/registrations#cancel {:format=>:json}
new_api_user_registration GET /api/v1/users/sign_up(.:format) api/v1/registrations#new {:format=>:json}
edit_api_user_registration GET /api/v1/users/edit(.:format) api/v1/registrations#edit {:format=>:json}
api_user_registration PATCH /api/v1/users(.:format) api/v1/registrations#update {:format=>:json}
PUT /api/v1/users(.:format) api/v1/registrations#update {:format=>:json}
DELETE /api/v1/users(.:format) api/v1/registrations#destroy {:format=>:json}
POST /api/v1/users(.:format) api/v1/registrations#create {:format=>:json}
然而,当我尝试注册一个用户时,我得到了以下错误
ActionController::RoutingError:
uninitialized constant Api::V1::RegistrationsController
为了将资源保持在
/api/v1/
路径下,并且仍然能够使用Desive的默认控制器,需要固定路由
不要使用名称空间
,而是使用范围
scope :api, defaults: { format: :json } do
scope :v1 do
devise_for :users
end
end
这样,您甚至不必使用as:'api'
来标识您的资源
Prefix Verb URI Pattern Controller#Action
new_user_session GET /api/v1/users/sign_in(.:format) devise/sessions#new {:format=>:json}
user_session POST /api/v1/users/sign_in(.:format) devise/sessions#create {:format=>:json}
destroy_user_session DELETE /api/v1/users/sign_out(.:format) devise/sessions#destroy {:format=>:json}
cancel_user_registration GET /api/v1/users/cancel(.:format) devise/registrations#cancel {:format=>:json}
new_user_registration GET /api/v1/users/sign_up(.:format) devise/registrations#new {:format=>:json}
edit_user_registration GET /api/v1/users/edit(.:format) devise/registrations#edit {:format=>:json}
user_registration PATCH /api/v1/users(.:format) devise/registrations#update {:format=>:json}
PUT /api/v1/users(.:format) devise/registrations#update {:format=>:json}
DELETE /api/v1/users(.:format) devise/registrations#destroy {:format=>:json}
POST /api/v1/users(.:format) devise/registrations#create {:format=>:json}
为了将资源保持在
/api/v1/
路径下,并且仍然能够使用Desive的默认控制器,需要固定路由
不要使用名称空间
,而是使用范围
scope :api, defaults: { format: :json } do
scope :v1 do
devise_for :users
end
end
这样,您甚至不必使用as:'api'
来标识您的资源
Prefix Verb URI Pattern Controller#Action
new_user_session GET /api/v1/users/sign_in(.:format) devise/sessions#new {:format=>:json}
user_session POST /api/v1/users/sign_in(.:format) devise/sessions#create {:format=>:json}
destroy_user_session DELETE /api/v1/users/sign_out(.:format) devise/sessions#destroy {:format=>:json}
cancel_user_registration GET /api/v1/users/cancel(.:format) devise/registrations#cancel {:format=>:json}
new_user_registration GET /api/v1/users/sign_up(.:format) devise/registrations#new {:format=>:json}
edit_user_registration GET /api/v1/users/edit(.:format) devise/registrations#edit {:format=>:json}
user_registration PATCH /api/v1/users(.:format) devise/registrations#update {:format=>:json}
PUT /api/v1/users(.:format) devise/registrations#update {:format=>:json}
DELETE /api/v1/users(.:format) devise/registrations#destroy {:format=>:json}
POST /api/v1/users(.:format) devise/registrations#create {:format=>:json}