Ruby on rails 设计、Rails API、路由问题
我在rails api应用程序中设置了以下路由:Ruby on rails 设计、Rails API、路由问题,ruby-on-rails,api,devise,Ruby On Rails,Api,Devise,我在rails api应用程序中设置了以下路由: constraints subdomain: 'api', path: '/' do namespace 'api', path: '/' do scope module: 'v1' , constraints: ApiConstraints.new(version: 1, default: true) do devise_scope :user do post 'sign_in'
constraints subdomain: 'api', path: '/' do
namespace 'api', path: '/' do
scope module: 'v1' , constraints: ApiConstraints.new(version: 1, default: true) do
devise_scope :user do
post 'sign_in' => 'sessions#create'
delete 'sign_out' => 'sessions#destroy'
end
resources :question
end
end
end
# rake routes
Prefix Verb URI Pattern Controller#Action
api_sign_in POST /sign_in(.:format) api/v1/sessions#create {:subdomain=>"api"}
api_sign_out DELETE /sign_out(.:format) api/v1/sessions#destroy {:subdomain=>"api"}
当我开始执行此测试时:
require 'rails_helper'
RSpec.describe Api::V1::SessionsController, :type => :controller do
describe '#create' do
it 'creates a session' do
@request.env["devise.mapping"] = Devise.mappings[:user]
user = User.create(email: 'rob@edukate.com', password: 'password')
post :create, action: :create, user_login: { password: user.password, email: user.email}
expect(response).to be_success
end
end
end
我得到这个错误:
F
Failures:
1) Api::V1::SessionsController#create creates a session
Failure/Error: post :create, action: :create, user_login: { password: user.password, email: user.email}
AbstractController::ActionNotFound:
Could not find devise mapping for path "/sign_in?user_login%5Bemail%5D=rob%40edukate.com&user_login%5Bpassword%5D=password".
我尝试过许多不同的路线,但我无法通过这个简单的测试。如果我不能像这样完成它,我就自己动手;但Deave似乎在用抽象控制器做一些奇怪的事情。提前谢谢